私はVBAから参照する必要があるライブラリを構築していますので、早期バインディングをサポートするためにタイプライブラリを用意する必要があります。私が見た例のほとんどは、COMに公開されているクラスのインタフェースを定義しています。COMに公開されている.NETクラスのインターフェイスを定義する利点は何ですか?
[Guid("D6F88E95-8A27-4ae6-B6DE-0542A0FC7039")]
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
public interface IMyClass
[Guid("13FE32AD-4BF8-495f-AB4D-6C61BD463EA4")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("MyNamespace.MyClass")]
public class MyClass : IMyClass
クラスがClassInterface.AutoDualを使用して直接インターフェイスを実装することに不利な点はありますか?より複雑なクラスの場合、どこのComVisible属性も使わずに、どのメンバーが公開されているかを明確に定義するためのインターフェースが好きです。しかし、私はCOM全体にさらされるイベントargsのようなかなり簡単なデータクラスもいくつか持っています。私は明示的にインターフェイス上のdispidsを設定する例を見てきました - これを行う利点はありますか?
インターフェイスとClassInterfaceType.Noneが必要な理由については、この質問http://stackoverflow.com/q/1435295/57428を参照してください。 – sharptooth