c# - 为什么我不应该使用 AutoDual?

标签 c# vb6 .net-2.0

到目前为止,我总是用 [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/

相关文章:

c# - 如何使用 Open XML 将超链接添加到 Word docx 中?

c# - ASP.NET MVC 数据注释验证 ErrorMessageResourceType

c# - 如何找出选择了哪个按钮?

c# - 为什么 COM Interop 将 VB6 bool 值视为 C# 短整数?

c# - 如何从运行的windows服务中调用方法

c# - 我可以将非原始数据类型传递给 WebMethod 吗?

c# - 对基类的派生类进行序列化和反序列化

java - Signal R native Android 应用程序协商失败

vb6 - 如何在vb6.0中显示缩小的网页浏览器

forms - vb6 表单自动重新加载