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