0

我有一个带有类的专有程序集,它需要是 COM 可见的,所以我可以将它与其他(非 .NET)应用程序一起使用。

想象这样一个类:

public class CProprietary
{
    public CProprietary2 oSubItem;
}

public class CProprietary2
{
}

这些类是专有的,COM 不可见。我没有它们的源代码。作为当前的解决方案,我正在创建自己的程序集,它提供了一个继承的 COM 可见类。

[ComVisible(true), ClassInterface(ClassInterfaceType.AutoDual)]
public class CComVisibleProprietary : CProprietary
{
}

现在我可以通过 COM 使用基类 (CProprietary),但是在访问 CComVisibleProprietary.oSubItem 时,从属类 (CProprietary2) 的对象仍然返回非 COM 可见。

所以我的问题是我需要一种方法来自动包装一个类及其所有子类。或者有什么简单的方法可以将 ComVisible 属性继承给子类?这些专有类的某些属性还返回 .NET 的对象,例如 System.Windows.Forms.ListBox.ObjectCollection,因此它们不属于同一个命名空间。

4

1 回答 1

1

“自动化视图”的正确方法是为每个嵌入对象(CProprietary2)创建自己的对象。每个嵌入对象都可以通过使用主对象(CProprietary)中的属性并返回嵌入对象的接口来访问。

但是没有自动的方法来实现这一点。您必须为所有对象提供相应的接口。

VBScript 中的语法,当 prop 是 CPropriatary 类型时,您可以通过这种方式访问​​子项。

prop.oSubItem.DoSomething
于 2017-09-27T12:05:42.703 回答