我有一些狀態值的枚舉:枚舉,默認鑄件圖片(C#)
public enum Status
{
New = 0,
Dropped = 1,
Approved = 2
}
是否有可能使一個默認的鑄造這樣一個枚舉?默認的投射,可以將每個狀態轉換爲特定的圖像而不需要顯式轉換?
謝謝。
我有一些狀態值的枚舉:枚舉,默認鑄件圖片(C#)
public enum Status
{
New = 0,
Dropped = 1,
Approved = 2
}
是否有可能使一個默認的鑄造這樣一個枚舉?默認的投射,可以將每個狀態轉換爲特定的圖像而不需要顯式轉換?
謝謝。
爲什麼不能製作一本詞典?
public class StatusHelper
{
private Dictionary<Status, Image> _map;
public StatusHelper()
{
_map = new Dictionary<Status, Image>()
{
{Status.New, new Image()},
{Status.Dropped, new Image()},
{Status.Approved, new Image()},
};
}
public Image GetImageForStatus(Status status)
{
return _map[status];
}
}
爲什麼這樣呢?那麼因爲你可以注入你的映射IoC(example here)
因此,這成爲;
public StatusHelper(Dictionary<Status, Image> injectedMap)
{
_map = injectedMap;
}
和地方在你的應用程序,你建立一個綁定(未測試,只是一個例子)
Bind<Dictionary<Status, Image>>()
.ToConstant(new Dictionary<Status, Image>()
{
{Status.New, new Image()},
{Status.Dropped, new Image()},
{Status.Approved, new Image()},
})
.WhenInjectedInto<StatusHelper>();
現在你是助手是無視你做出狀況的任何變化或它的圖像
「因爲你可以注入你的映射與IoC」兩個問題:1)爲什麼這是件好事? 2)這些圖像可能來自文件,資源或URL,可以配置_if_ _needed_。也許他們從數據庫或文件加載,並且可以修改_if_ _needed_。爲什麼IoC會比這些情況下的替代方案更好? –
那麼,離手可以說我有一個由10個應用程序使用的單個庫...我可以改變每個應用程序的庫類的行爲,因爲我正在注入他們需要的信息。即對於不同應用程序的這些Status枚舉,我可以有不同的圖像,而不會改變任何類 –
你在這裏指的是什麼'Image'類型?如果這是你自己的班級,你可以*添加一個隱式轉換,但我個人不會。 –