COM で表示できるようにしようとしている次のインターフェイスがあります。タイプ ライブラリを生成しようとすると、実装クラスがジェネリック クラスから派生するという事実が気に入りません。
ジェネリック クラスを COM 実装クラスとして使用することはできますか? (非ジェネリック ラッパーを作成して COM にエクスポートできることはわかっていますが、これにより、なくしたい別のレイヤーが追加されます。)
[ComVisible(true)]
public interface IMyClass
{
...
}
[ComVisible(true), ComDefaultInterface(typeof(IMyClass))]
[ClassInterface(ClassInterfaceType.None)]
public class MyClass : BaseClass<IMyClass>, IMyClass
{
...
}
エラーメッセージ:
警告: タイプ ライブラリ エクスポーターは、派生する型を検出しました ジェネリッククラスからのもので、としてマークされていません [ClassInterface(ClassInterfaceType.None)]. クラスインターフェイスはできません そのようなタイプにさらされます。タイプを次のようにマークすることを検討してください [ClassInterface(ClassInterfaceType.None)] 明示的なインターフェースをデフォルトのインターフェースとして公開する ComDefaultInterface 属性を使用する COM。