2015-12-17 3 views
0

У меня есть существующее перечислениеСоздание нового перечисления из существующего перечисления

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, 
    } 
} 

Мой вопрос: как быстро его сопоставить? Я хочу преобразовать старый в новый. Старый - от третьего лица. Слишком много элементов. Мне нужно только два.

+4

Что вопрос? – Albireo

+2

Что это значит? Вы не можете _create_ enum (кроме действительно уродливых вещей, таких как создание сборок с использованием отражения). Но что более важно, вам не нужно делать такие вещи. Что вы на самом деле пытаетесь сделать? –

+0

Вы спрашиваете, как сопоставить один «enum» с другим? – juharr

ответ

0
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.Available, BalanceType.Phone

0

Вы можете попробовать следующее:

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, 
    } 
} 

Я считаю, что вы должны проверить значение или получить значение по умолчанию для других значений.

Просто обеспечил компиляцию, не успел проверить, как это работает.

Смежные вопросы