我使用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