来自 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# 中。
我们有一个 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# 中。