2010-07-15 126 views
2

這是我的枚舉如何導入另一個枚舉成我的枚舉

public enum MyEnum {Blue,Red};

還有一個名爲ExternalEnum的外部枚舉,我沒有,也無法更改它的源代碼,但我可以使用這個類,比如我知道里面有黃色和白色。

我想要做的是把所有的元素在外部枚舉,使他們我的枚舉的一部分,即

公共枚舉MyEnum {藍,紅,ExternalEnum.Yellow,ExternalEnum.White};

有沒有一種方法可以輕鬆做到這一點,所以每當我得到一個新版本的ExternalEnum時,我都不需要手動檢查所有元素?我不想使用擴展(子類),因爲它們屬於不同的包。

謝謝!

+2

這是什麼語言? – 2010-07-15 02:02:11

+0

「包」表明它是java,但「擴展」使我困惑。你是否希望動態更新這個「枚舉」中的值? – Cambium 2010-07-15 02:09:05

+0

+1丹尼爾 - 不知道預期的語言(我們可以猜到,但不能確定),我們該如何幫忙? – Mawg 2010-07-15 02:34:21

回答

2

你說的是「動態枚舉」。

Here is a link回到StackOverflow的上一個問題。

+1

+1是一個很好的參考,但那個是C#特定的,OP沒有指定一種語言。它還沒有被接受的答案。 OP,你打算使用哪種語言? – Mawg 2010-07-15 02:36:17

+0

對不起 saunderl 2010-07-15 18:29:16

1

由於您沒有指定語言,所以很難爲您提供幫助,但我懷疑您希望在解釋型語言中執行的操作可能比編譯時更容易。

2

您可以通過重新定義枚舉常量這樣做:

public enum ExternalEnum 
{ 
    White, // -> 0 
    Black // -> 1 
} 

public enum MyEnum 
{ 
    White = ExternalEnum.White, // -> 0 
    Black = ExternalEnum.Black, // -> 1 
    Red, // -> 2 
    Blue // -> 3 
} 

但是,你必須確保枚舉常量的整數值不重疊。最簡單的方法是首先聲明外部常量。沒有像自動導入枚舉那樣的東西。你不能擴展枚舉。