所以,我有一個枚舉:創建對象的列表使用枚舉數據C#
public enum myEnum
{
IBM = 1,
HP = 2,
Lenovo = 3
}
我有一個Brand
類
public class Brand
{
public Brand(string name, int id)
{
Name = name;
Id = id;
}
public string Name { get; private set; }
public int Id { get; private set; }
}
我想創建填入數據Brand
對象的列表從MyEnum
。喜歡的東西:
private IEnumerable<Brand> brands = new List<Brand>
{
new Brand(myEnum.IBM.ToString(), (int) myEnum.IBM),
new Brand(myEnum.HP.ToString(), (int) myEnum.HP),
new Brand(myEnum.Lenovo.ToString(), (int) myEnum.Lenovo),
};
我可以創建兩個數組 - 一個與枚舉名稱和其他與IDS枚舉和foreach他們創造每次迭代品牌對象,但不知道是否有更好的解決方案。
最後,我將與Royi Mindel解決方案一樣,根據我的說法,這是最合適的。非常感謝Daniel Hilgarth的回答以及Royi Mindel的建議。如果可以的話,我會把這兩個問題都歸功於他們。
public static class EnumHelper
{
public static IEnumerable<ValueName> GetItems<TEnum>()
where TEnum : struct, IConvertible, IComparable, IFormattable
{
if (!typeof(TEnum).IsEnum)
throw new ArgumentException("TEnum must be an Enumeration type");
var res = from e in Enum.GetValues(typeof(TEnum)).Cast<TEnum>()
select new ValueName() { Id = Convert.ToInt32(e), Name = e.ToString() };
return res;
}
}
public struct ValueName
{
public int Id { get; set; }
public string Name { get; set; }
}
我認爲這是一個最好的解決方案! –
查看['Enum.GetNames()'](http://msdn.microsoft.com/en-us/library/system.enum.getnames.aspx)。 – CodeCaster
只保留Brand類中的MyEnum,並創建一個返回enum.ToString()(如果需要)的屬性 –