检查给定类型是否为枚举

Bry*_*isi 109 c# enums

我正在为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
}
Run Code Online (Sandbox Code Playgroud)

我已经有了支持代码,myEnum.Description()显然会返回其字符串描述.

在JsonConverter实现中,有这样的方法:

    public override bool CanConvert(Type objectType)
    {

    }
Run Code Online (Sandbox Code Playgroud)

我试图找出如何确定是否objectType是一个Enum并返回true,以便转换器知道它可以转换此对象.由于我有很多Enum,我无法明确检查每一个,所以我希望有一个更通用的方法来实现这一点.

Ry-*_*Ry- 219

使用该IsEnum属性:

if(objectType.IsEnum) {
    return true;
}
Run Code Online (Sandbox Code Playgroud)

  • 或者只是`return objectType.IsEnum` (57认同)
  • PCL中的@SergeyMetlov可以使用objectType.GetTypeInfo().IsEnum (9认同)
  • @AndrewWhitaker:我认为既然这个方法被称为`CanConvert`,它会检查多个不同的可能转换,而不仅仅是它是一个`enum`.否则你也可以只使用`IsEnum`属性. (6认同)
  • @BryanMigliorisi:非常欢迎你:)确保始终浏览IntelliSense,我从中学到了很多东西. (4认同)

par*_*mar 16

Type.IsEnum是您正在寻找的