特定のインターフェイスを実装するオブジェクトを引数として受け入れるメソッドを公開するマネージド com オブジェクトが必要です。このようなもの
[ComVisible(true)]
[Guid(".....")]
class SomeClass {
public void SomeMethod(ISomeInterface arg)
.....
どうやらISomeInterface
また宣言する必要がありますComVisible
。
ここで、マネージド クライアントでその COM オブジェクトを使用して、そこで呼び出したいと考えていますSomeMethod
。問題は、実装するオブジェクトをインスタンス化する必要があることISomeInterface
です。それがネイティブの COM オブジェクトであれば、相互運用アセンブリが自動的に生成されるので、問題にはなりません。ただし、マネージ COM オブジェクトの相互運用アセンブリを生成することはできません。
.NET 4.0 では型等価性の概念が導入されているようです。ComImport
属性を使用して相互運用性を手動で生成できるようです。しかし、それはかなり厄介な仕事のように見えます。も使用できると思いますTypeIdentifierAttribute
が、そのドキュメントはあいまいであり、主にコンパイラによる使用を目的としていると書かれています。
それで、それを行う他の方法はありますか?