【发布时间】:2021-02-16 06:23:52
【问题描述】:
我正在使用 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 时,我得到了,
【问题讨论】:
-
“发生了什么?” - OCX 的精彩世界。你有关于这个库的其他文档来源吗?在与 OCX 打交道一段时间后,我只能建议您不惜一切代价避免使用它们。是的,全部。
-
@Fildor 如果我按 F12,我只能看到
public virtual成员 od 这个 OCX 类 -
但是除了默认的 CTORS 之外没有其他 CTORS,对吧?还是根本没有 CTOR?网络上的某个地方没有进一步的文档?
-
即使我在 F12 中也没有看到任何构造函数。我看到它继承自 3 个接口。如果我通过 Visual Studio 反编译生成的库,我会看到
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType=MethodCodeType.Runtime)] internal extern MyOCXClass(); -
那是entirely normal。如果您在 api 中找不到工厂方法,则必须与作者交谈。