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 属性を子クラスに継承する簡単な方法はありますか? これらの独自クラスの一部のプロパティは、System.Windows.Forms.ListBox.ObjectCollection などの .NET のオブジェクトも返すため、同じ名前空間に属していません。