我認爲很多C#開發人員碰到這樣的問題:在標準的.net庫和許多標準類以及它們的方法中都有一些枚舉。但是如果你想通過添加一些不可能的字段來擴展這個枚舉,但它可以有效地簡化開發過程並且不會干擾那些標準類的工作。我通過具體的例子來描述它: System.Diagnostics命名空間中有一個枚舉TraceOptions,它由TraceListeners使用。讓我們來設計一些額外選項的Listener(比如AssemblyName等)。現在我必須創建新的枚舉,其中包含所有額外的選項,這些選項補充了TraceOptions枚舉中的選項。然後將新的屬性ExtraTraceOptions添加到我的偵聽器。但如果我能寫這樣的事:爲什麼在C#中不存在枚舉擴展?
enum MyExtraEnum : TraceOptions
{
AssemblyName = 128
}
MyExtraEnum將被新的領域,它不能與跟蹤選項的領域也由名交叉,也不是價值延伸跟蹤選項。然後,我可以使用跟蹤選項與新的領域,如:
TraceOptions t = TraceOptions.AssemblyName; (IntelliSense may display that this
field is extended field from MyExtraEnum enumeration)
我明白,這可能會破壞現有的代碼使用跟蹤選項枚舉,但如果我相信它不會發生,所有的責任心使用這種功能是躺在我。
你對這樣的表現有什麼看法?
這有點不符合枚舉的目的。 – BoltClock