簡體   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