ac# com インターフェイスでは、このようなデフォルト メンバーを定義できます。
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[ComVisible(true)]
public interface IMyComClass
{
[DispId(0)] string Item{get;}
}
IDispatch (またはデュアル) を使用すると、すべてが期待どおりに機能し、VBA からは次のようにプロパティを省略できます
Dim o1 As New MyComClass
Debug.Print o1 'this is equivalent to o1.Item
しかし、インターフェイスを IUnknown としてのみ定義すると、機能しません。Excel オブジェクト ブラウザでは、「青い点」でマークされ、「既定のメンバー」というラベルが付いたプロパティがまだ表示されます。ただし、.Item は VBA コードで明示的に指定する必要があります。
IUnknown の既定のプロパティを IDispatch のように動作させる方法はありますか?