我们有一个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#中。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句