[英]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.