[英]Can I cast from a generic type to an enum in C#?
我正在編寫一個實用程序函數,它從數據庫中獲取一個整數,並將一個類型化的枚舉返回給應用程序。
這是我試圖做的(注意我傳入一個數據讀取器和列名而不是我真實函數中的int
):
public static T GetEnum<T>(int enumAsInt)
{
Type enumType = typeof(T);
Enum value = (Enum)Enum.ToObject(enumType, enumAsInt);
if (Enum.IsDefined(enumType, value) == false)
{
throw new NotSupportedException("Unable to convert value from database to the type: " + enumType.ToString());
}
return (T)value;
}
但它不會讓我(T)value
說:
無法將類型'System.Enum'轉換為'T'。
另外,我已經閱讀了很多關於使用Enum.IsDefined
評論。 表現明智,聽起來很糟糕。 我怎樣才能保證有效價值?
像這樣:
return (T)(object)value;
改變這個:
Enum value = (Enum)Enum.ToObject(enumType, enumAsInt);
對此:
T value = (T)Enum.ToObject(enumType, enumAsInt);
並刪除演員:)
有關信息,可以使用C#7.3及更高版本中的通用約束Enum
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.