Enums ile genel olmaya çalışmakla biraz zorlanıyorum. Bu kadar basit olmadığını ve bir çözüm bulamıyorum gibi okudum.Başlarken Tanım Genel bir numaranın Özniteliği
Genel bir işlev oluşturmaya çalışıyorum, bir enum türü için her bir enum değeri için tanım döndürecektir.
:public static KeyValuePair<string, List<KeyValueDataItem>> ConvertEnumWithDescription<T>()
where T : struct, IConvertible
{
if (!typeof(T).IsEnum)
{
throw new Exception("Type given T must be an Enum");
}
var enumType = typeof(T).ToString().Split('.').Last();
var itemsList = Enum.GetValues(typeof(T))
.Cast<T>()
.Select(x => new KeyValueDataItem
{
Key = Convert.ToInt32(x),
Value = GetEnumDescription(Convert.ToInt32(x))
})
.ToList();
var res = new KeyValuePair<string, List<KeyValueDataItem>>(enumType, itemsList);
return res;
}
public static string GetEnumDescription(Enum value)
{
FieldInfo fi = value.GetType().GetField(value.ToString());
var attributes = (DescriptionAttribute[])fi.GetCustomAttributes(
typeof(DescriptionAttribute), false);
if (attributes.Length > 0)
return attributes[0].Description;
return value.ToString();
}
Şu anda yaşadığım sorun şudur: Ben burada
Ben bugüne kadar ne var ... her numaralama türü için bu yöntemi çoğaltmak için o jenerik değil tutmak istiyorum Ben işleviniGetEnumDescription
çağırmak çalışıyorum zaman
'System.Enum' için 'int'
dönüştürmek olamaz. Ben T
dönüştürmek ise:
Value = GetEnumDescription((T)(object)Convert.ToInt32(x));
Bu alıyorum hatadır:
'System.Enum'