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

StayOnTarget

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

在Visual Studio 2010对象浏览器中,所有VB6类以及枚举名称都是可见的但是,在C#代码中使用智能感知时,枚举未显示,也未列出。但是,枚举名称的确来自智能感知,就像我尝试过的所有类名称和类方法,属性等一样。因此,似乎仅忽略了这些值。

如果在代码窗口中单击枚举名称,然后选择“转到定义”,则会得到如下所示的内容:

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

这说明了同样的事情-枚举不存在值。

因此,问题是-枚举值到哪里去了,我们可以做些什么使它们显示出来吗?

注-如果需要,我可以修改VB6 DLL。

谢谢

StayOnTarget

枚举值在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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章