我有一个带有类的专有程序集,需要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,因此它们不属于同一名称空间。
答案 0 :(得分:0)
自动化视图中的正确方法'将为每个嵌入对象创建自己的对象(CProprietary2)。可以使用主对象中的属性(CProprietary)访问每个嵌入对象,并将接口返回到嵌入对象。
但是没有自动的方式来实现这个目标。您必须为所有对象提供相应的接口。
VBScript中的语法,当prop是CPropriatary类型时,您可以通过这种方式访问子项。
prop.oSubItem.DoSomething