到目前为止,我总是用 [AutoDual]
属性修饰我想在 VB6 中使用的 .NET 类。重点是在 VB6 环境中获得 .NET 对象的 Intellisense。然而,前几天我用谷歌搜索了 AutoDual,第一个答案是“不要使用 AutoDual”。
我一直在寻找为什么我不应该使用它的连贯解释,但找不到。
有人能解释一下吗?
最佳答案
我找到了一种可靠的方法来为 VB6 中的 .NET 对象提供智能感知,同时又不破坏接口(interface)。关键是在接口(interface)中的每个公共(public)方法/属性都用DispatchID来标记。然后类必须从这个接口(interface)继承 - 以下面的方式。
[Guid("BE5E0B60-F855-478E-9BE2-AA9FD945F177")]
[InterfaceType(ComInterfaceType.InterfaceIsIDispatch)]
public interface ICriteria
{
[DispId(1)]
int ID { get; set; }
[DispId(2)]
string RateCardName { get; set; }
[DispId(3)]
string ElectionType { get; set; }
}
[Guid("3023F3F0-204C-411F-86CB-E6730B5F186B")]
[ClassInterface(ClassInterfaceType.None)]
[ProgId("MyNameSpace.Criteria")]
public class Criteria : ICriteria
{
public int ID { get; set; }
public string RateCardName { get; set; }
public string ElectionType { get; set; }
}
调度 ID 为您提供了在类中移动项目的能力,而且您现在可以向类中添加新内容,而不会破坏二进制兼容性。
关于c# - 为什么我不应该使用 AutoDual?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2714430/