[英]Enum values from VB6 DLL do not appear in C#
我们有一个VB6 DLL,其中包含几个枚举定义。 我们已将VB6 DLL加载为C#项目中的参考。
在Visual Studio 2010对象浏览器中,所有VB6类以及枚举名称都是可见的。 但是,在C#代码中使用智能感知时,枚举值未显示,也未列出。 但是,枚举名称确实来自智能感知,就像我尝试过的所有类名称和类方法,属性等一样。 因此,似乎仅忽略了这些值。
如果我在代码窗口中单击枚举名称,然后选择“转到定义”,则会得到以下内容:
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
如果将其编译为DLL并作为参考加载到Visual Studio 2010中,则在对象浏览器中,两个枚举都是可见的。 但是,枚举值未显示。
我正在使用的DLL中的大多数枚举都有名称中带有空格的枚举。 这是一个常见的命名约定。 但是幸运的是,有一些没有使用这种格式,我注意到它们的值显示在C#中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.