枚举,默认强制转换为映像 (C#)

本文关键字:映像 转换 默认 枚举 | 更新日期: 2023-09-27 18:32:44

我有一个带有一些状态值的枚举:

public enum Status
{
    New = 0,
    Dropped = 1,
    Approved = 2
}

是否可以进行默认转换这样的枚举?默认强制转换,将每个状态强制转换为特定映像,而无需显式转换?

谢谢。

枚举,默认强制转换为映像 (C#)

为什么你不能做一本字典?

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 注入映射(此处的示例)

所以,这变成了;

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>();

现在,您的助手不会对状态或其图像所做的任何更改