【发布时间】:2013-04-19 10:15:54
【问题描述】:
我将 COM 与旧的 VB6 应用程序一起使用。
我将代码更改为在接口中使用 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 在后期绑定时唯一可以看到的接口。它将是标记为 [Default] 接口的接口。所以不是一个真正的问题,因为其他接口无论如何都不可用。虽然这可能是一个真正的问题;)