c#如何从自定义属性获取枚举?
问题描述:
这是MyEnumc#如何从自定义属性获取枚举?
public class CountryCodeAttr : EnumAttr
{
public string Code { get; set; }
public string Description { get; set; }
}
public enum CountryCode
{
[CountryCodeAttr(Code = "Unknown", Description = "Unknown")]
Unknown,
[CountryCodeAttr(Code = "CH", Description = "Swiss", Currency="CHF")]
CH
....
}
我怎样才能,获得与特定CountryCodeAttr枚举?例如从属性Currency?
答
您需要从枚举类型得到它:
CountryCode value = CountryCode.CH;
FieldInfo field = typeof(CountryCode).GetField(value.ToString());
var attr = field.GetCustomAttribute<CountryCodeAttr>();
答
有泛型做到这一点的另一种方法:
public static T GetAttribute<T>(Enum enumValue) where T: Attribute
{
T attribute;
MemberInfo memberInfo = enumValue.GetType().GetMember(enumValue.ToString())
.FirstOrDefault();
if (memberInfo != null)
{
attribute = (T) memberInfo.GetCustomAttributes(typeof (T), false).FirstOrDefault();
return attribute;
}
return null;
}
我不认为这是所列出的问题的副本。我相信他在问如何将货币值(如“CHF”)解析为“CountryCode.CH”,类似于https://*.com/questions/1033260/how-can-i-get-an-enum-从描述中获取价值,但具有自定义属性。 – TylerBrinkley