我使用COM與舊的VB6應用程序。DispID在接口上必須是唯一的嗎?
我改變了我的代碼以使用DISPID的接口,它似乎工作比使用[ClassInterface(ClassInterfaceType.AutoDual)]
更好。
但是,它允許在每個接口從DISPID(1)計數開始,即使當類使用兩個接口?
它這樣工作穩定嗎?或者我錯過了某些東西?
[ComVisible(true)]
[Guid("9E1125A6-...")]
public interface IMyInterface1
{
[DispId(1)]
string Name1 { get; }
}
[ComVisible(true)]
[Guid("123425A6-...")]
public interface IMyInterface2
{
[DispId(1)]
string Name2 { get; }
}
[ComVisible(true)]
[ClassInterface(ClassInterfaceType.None)]
class MyClass : IMyInterface1, IMyInterface2
{
public string Name1 { get { return "Name1"; } }
public string Name2 { get { return "Name2"; } }
}
您列出的第一個界面是VB6在延遲綁定時可以看到的唯一界面。它將是標記爲[默認]界面的界面。所以不是一個真正的問題,因爲其他接口無法使用。儘管這可能是一個真正的問題;) – 2013-04-25 20:11:32