我有一个带有类的专有程序集,它需要是 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,因此它们不属于同一个命名空间。