我繼承有大量的代碼定義枚舉的網絡API,我想將它們轉換爲被稱爲EnumView一個視圖模型類,使他們能夠如下連載...通用枚舉約束
{ID:值,名稱:enumName}
public class EnumView
{
public int Id { get; set; }
public string Name { get; set; }
}
在限制泛型類枚舉類型,我得到的警告
約束不能特殊類的System.Enum'
這是我要使用通用的轉換器...
public class EnumViewConverter<T> where T : Enum
{
public static List<EnumView> ConvertToView()
{
List<EnumView> enumViews = new List<EnumView>();
T[] enumValues = (T[])Enum.GetValues(typeof(T));
foreach (var enumValue in enumValues)
{
var enumView = new EnumView
{
Id = (int)enumValue,
Name = Enum.GetName(typeof(T), enumValue)
};
enumViews.Add(enumView);
}
return enumViews;
}
}
沒有T與約束到一個枚舉,下面的轉換不編譯...
編號=(int)的enumValue,
由於缺乏泛型約束的問題,最好的方法是什麼?
好吧,你有一個定義枚舉,但你打算怎麼使用它?通過回答這個問題,我們找到了轉換的目的,然後我們可以想出一個解決方案 – Hamed
@leppie - 我在發佈之前已經閱讀過這個問題/答案,但是並不認爲它真的回答了我的問題。 – Will
@Hamed不知道你在做什麼 - EnumView將在API中被序列化。枚舉用於服務器端代碼... – Will