我有一些状态值的枚举:枚举,默认铸件图片(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'类型?如果这是你自己的班级,你可以*添加一个隐式转换,但我个人不会。 –