繁体   English   中英

使用 C# 调用 OCX(COM) 方法

[英]Calling OCX(COM) method using C#

我正在使用 C# 中的 OCX 库。 我从 Visual Studio 添加了 COM 引用。 当我尝试在这个类中创建一个对象时,我得到了,

var ocxCls = new MyOCXClass();

CS1729  'MyOCXClass' does not contain a constructor that takes 0 arguments

如果我使用反射来查看参数和构造函数计数,

        Type tt = typeof(MyOCXClass);
        var  flags = BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance;
        var cs = tt.GetConstructors(flags)[0].GetParameters().Count();

构造函数的计数为 1,参数为 0? 发生了什么?

更新:当我在 OLEView 中打开 OCX 时,我得到了,

在此处输入图片说明

我没有使用控制台应用程序,而是使用了 WinForm 应用程序。 现在 Visual Studio 生成一个我可以实例化的类。

在控制台中生成的类是,

[ClassInterfaceAttribute(0)]
[ComSourceInterfaces("OCX.__OCX")]
[Guid("SomeGuid")]
[TypeLibType(32)]
public class OCXClass : _OCX, OCX, __OCX_Event
{
    [DispId(1610809349)]
    public virtual void OCXMethod1(ref short milliseconds);
    [DispId(1610809350)]
    public virtual bool OCXMethod2();
}

在 WinForms 中它显示,

[Clsid("{SomeGuid}")]
[DesignTimeVisible(true)]
public class OCXClass : OCXClassHost
{
    public OCXClass();
    public virtual void OCXMethod1(ref short milliseconds);
    public virtual bool OCXMethod2();
}

当我使用 JustDeCompile 时,我也看到,

[ClassInterfaceAttribute(0)]
[ComSourceInterfaces("OCX.__OCX")]
[Guid("SomeGuid")]
[TypeLibType(32)]
public class OCXClass : _OCX, OCX, __OCX_Event
{
    [MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)]
    internal extern OCXClass();

请注意我认为阻止我创建对象的内部 extern 构造函数。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM