从现有枚举创建新枚举

本文关键字:枚举 新枚举 创建 | 更新日期: 2023-09-27 18:27:21

我有一个现有的枚举

public enum BalanceType // existing enum
{
    Available,
    Phone,
    Commissary,
    Account,
    Reserve,
    Encumber,
    Debt,
    Held,
}

现在我想从中创建一个新的枚举。新的枚举只包含两个字段。

 public class IvrBalanceInfo
{
    public decimal Amount { get; set; }
    public IvrBalanceType Type { get; set; }
    public IvrBalanceInfo(BalanceInfo info, BalanceType type)
    {
        Amount = info.Amount;
        //How to create the enum IvrBalanceType?
    }
    public enum IvrBalanceType // new enum
    {
        Available,
        Phone,
    }
}

我的问题是如何快速绘制地图?我的意思是把旧的换成新的。旧的是第三方的。元素太多了。我只需要两个。

从现有枚举创建新枚举

public class IvrBalanceInfo
{
   public decimal Amount { get; set; }
   public IvrBalanceType Type { get; set; }
   public IvrBalanceInfo(BalanceInfo info, BalanceType type)
   {
      Amount = info.Amount;
      if (type == BalanceType.Available)
         Type = IvrBalanceType.Available;
      else if(type == BalanceType.Phone)
         Type = IvrBalanceType.Phone
      // here you have to handle the other values and set the default
      // values for the Type Property or it will take the default value
      // if you not set it
   }
   public enum IvrBalanceType // new enum
   {
       Available,
       Phone,
   }
}

另一个解决方案的问题是,如果type参数的值不是BalanceType.AvailableBalanceType.Phone 的值之一,则会引发异常

您可以尝试以下操作:

public class IvrBalanceInfo
{
    public decimal Amount { get; set; }
    public IvrBalanceType Type { get; set; }
    public IvrBalanceInfo(BalanceInfo info, BalanceType type)
    {
        Amount = info.Amount;
        Type = (IvrBalanceType)(int)type;
    }
    public enum IvrBalanceType // new enum
    {
        Available,
        Phone,
    }
}

我认为您应该检查值,或者为其他值获取一些默认值。

只是确保了它的编译,没有时间检查它是如何工作的。