来自 VB6 DLL 的枚举值不会出现在 C# 中

Enum values from VB6 DLL do not appear in C#

我们有一个 VB6 DLL,其中包含几个枚举定义。我们已加载 VB6 DLL 作为 C# 项目中的引用。

在 Visual Studio 2010 对象浏览器中,所有 VB6 class 都是可见的,枚举 names 也是可见的。但是,枚举 values 未显示,并且在 C# 代码中使用智能感知时也未列出。然而,枚举名称确实来自智能感知,就像我尝试过的所有 class 名称和 class 方法、属性等一样。所以似乎只有值被遗漏了。

如果我单击代码中的枚举名称 window 并 select 转到定义,我会得到如下内容:

namespace DLLName
{
    [Guid("3DD0C797-2BF0-4A7A-8E1E-83E3095CB3AE")]
    public enum EnumName
    {
    }
}

这显示了同样的事情 - 存在没有值的枚举。

所以问题是 - 枚举值去了哪里,我们可以做些什么来让它们显示出来?

注意 - 如有必要,我可以修改 VB6 DLL。

谢谢

枚举值在 VB6 的值名称中有 个空格,这导致它们在 C# 的枚举定义中被省略。

在 VB6 中,您可以使用特殊的方括号语法声明名称中包含空格的枚举值。示例:

Public Enum TestEnumNoSpaces
    EnumA
    EnumB
    EnumC
End Enum

Public Enum TestEnumWithSpaces
    [Enum A]
    [Enum B]
    [Enum C]
End Enum

如果在 Visual Studio 2010 中将其编译为 DLL 并将其作为引用加载,则在对象浏览器中两个枚举都是可见的。但是,未显示枚举

我正在使用的 DLL 中的大多数枚举的名称中都有空格。这是一个通用的命名约定。但幸运的是,有一些没有使用这种格式,我注意到它们的值显示在 C# 中。