在 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 中一样?