我正在为Json.NET编写一个JsonConverter,它允许我将任何枚举转换为[Description]属性定义的字符串值。
例如:
public enum MyEnum {
[Description("Sunday")] Sunday,
[Description("Monday")] Monday,
[Description("Tuesday")] Tuesday,
[Description("Wednesday")] Wednesday,
[Description("Thursday")] Thursday,
[Description("Friday")] Friday,
[Description("Saturday")] Saturday
}
我已经有了支持myEnum.Description()
的代码,它显然会返回其字符串描述。
在JsonConverter实现中,有这种方法:
public override bool CanConvert(Type objectType)
{
}
我试图弄清楚如何确定objectType
是否为Enum
并返回true,以便转换器知道它可以转换此对象。由于我有很多Enum
,我无法明确检查每一个,所以我希望有一种更通用的方法来实现这一点。
答案 0 :(得分:198)
使用IsEnum
属性:
if(objectType.IsEnum) {
return true;
}
答案 1 :(得分:15)
Type.IsEnum正在寻找
答案 2 :(得分:1)
我通过过多地关注[描述]来完全误解了这个问题,所以如果你想要检查一个特定的枚举是否具有[description]属性(如果json在没有的情况下抛出一个拟合) ,这是检查它的一种可能方法:
public override bool CanConvert(Type objectType)
{
FieldInfo[] fieldInfo = objectType.GetFields(BindingFlags.Public | BindingFlags.Static);
if( fieldInfo.Length > 0 )
{
return ( fieldInfo[0].GetCustomAttributes(typeof(DescriptionAttribute),false).Length > 0 );
}
else
{
return false;
}
}