Estou escrevendo um JsonConverter para Json.NET que deve me permitir converter qualquer enum em um valor de string definido por um atributo [Description].
Por exemplo:
public enum MyEnum {
[Description("Sunday")] Sunday,
[Description("Monday")] Monday,
[Description("Tuesday")] Tuesday,
[Description("Wednesday")] Wednesday,
[Description("Thursday")] Thursday,
[Description("Friday")] Friday,
[Description("Saturday")] Saturday
}
Já tenho o código de suporte, myEnum.Description()
que obviamente retornará sua descrição de string.
Na implementação de JsonConverter, existe este método:
public override bool CanConvert(Type objectType)
{
}
Estou tentando descobrir como determinar se objectType
é um Enum
e se retorna verdadeiro para que o conversor saiba que pode converter este objeto. Como tenho muitos Enum
, não posso verificar explicitamente cada um, então esperava uma maneira mais genérica de fazer isso.
Respostas:
Use a
IsEnum
propriedade:fonte
return objectType.IsEnum
CanConvert
, ele verificará se há várias conversões possíveis diferentes, não apenas se for umenum
. Caso contrário, você pode simplesmente usar aIsEnum
própria propriedade.Type.IsEnum é o que você está procurando
fonte
Eu interpretei mal a questão ao me concentrar demais na [Descrição], então caso você queira verificar se um determinado enum tem um atributo [descrição] ou não (no caso de json gerar um ajuste quando não há nenhum), isso é uma maneira possível de verificar isso:
fonte