Я пишу JsonConverter для Json.NET, который должен позволить мне преобразовать любое перечисление в строковое значение, определенное атрибутом [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
и вернуть истину, чтобы конвертер знал, что он может преобразовать этот объект. Поскольку у меня их много Enum
, я не могу явно проверить каждый из них, поэтому я надеялся на более общий способ сделать это.
Ответы:
Используйте
IsEnum
свойство:источник
return objectType.IsEnum
CanConvert
, он будет проверять несколько различных возможных преобразований, а не только то, что этоenum
. В противном случае вы можете просто использовать самоIsEnum
свойство.Type.IsEnum - это то, что вы ищете
источник
Я полностью неверно истолковал вопрос, слишком сосредоточившись на [Description], поэтому на случай, если вы когда-нибудь захотите проверить, имеет ли конкретное перечисление атрибут [description] или нет (в случае, если json подходит, когда его нет), это один из возможных способов проверить это:
источник