我有一個小問題。我在多個應用程序使用的框架中有一個應用程序監視部分。數據結構表示可擴展和唯一的值
現在我有一個功能是這樣的:
public enum Vars
{
CPU,
RAM
}
public void Add(Vars variable, object value)
{
[...]
}
這是在Add方法作爲參數變量將被用作數據庫的條目的名稱。 現在我得到了要求,應用程序可以在框架外指定自己的變量。因爲你不能從一個枚舉繼承,這會導致一些麻煩。
爲了解決這個問題,我基本上看到了2種可能性(這在我看來並不令人滿意)。
可能性1:
public void Add(enum variable, object value)
此方法將接受各種枚舉的,因此用戶可以使用瓦爾枚舉,以及他們已經被定義自理枚舉。此解決方案的問題:用戶可能會在..應用程序和框架中使用相同的名稱。我無法區分兩個枚舉值「CPU」(框架可能會將百分比值存儲爲「CPU」,應用程序可能會將進程cpu使用情況存儲爲「CPU」)。
可能性2:
第二種方法將是一個類而不是一個枚舉,類似:
public class Vars
{
public const string CPU = "CPU";
public const string RAM = "RAM";
}
這裏的缺點: 1.多寫。 2.我必須定義參數字符串:
public void Add(string variable, object value);
這可能會導致missuse以及(其中添加字符串,而不是直接確定從瓦爾繼承的類應用程序)。
如何定義其中模型任何想法:
- 可以繼承(以延長由應用程序特定值的值)
- 可作爲一個參數
- 保證,不存在任何雙(=相同的值)條目 ?
閱讀http://stackoverflow.com/questions/9232488/emulate-enum-inheritance-best-choice-practices –