繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM