COM の CoClass を .NET から使う場合は、空のクラス定義に ComImportAttribute と GuidAttribute を付け、同じように定義しておいたインターフェースにキャストするのが一般的です。
しかし以下のようにインターフェースを new しているように書かれているコードを見たことがある方がいるかもしれません。
ISampleInterface si = new ISampleInterface(); si.Method();
これは CoClassAttribute を利用して、自動的に CoClass の new に置き換えています。
[CoClass(typeof(SampleInterfaceClass))] interface ISampleInterface { void Method(); } [ComImport, Guid("...")] class SampleInterfaceClass { }
CoClass の Type を CoClassAttribute に指定すると、インターフェースを new したときに自動で CoClass の new に置き換えられます。それで?という感じですがあまり見なかったの紹介してみました。
ちなみに、最初のコードは Reflector で見てみると
((ISampleInterface) new SampleInterfaceClass()).Method();
のようなコードに変換されていました。面白いですね。