Piszę JsonConverter dla Json.NET, który powinien pozwolić mi konwertować wszystkie wyliczenia na wartość ciągu zdefiniowaną przez atrybut [Opis].
Na przykład:
public enum MyEnum {
[Description("Sunday")] Sunday,
[Description("Monday")] Monday,
[Description("Tuesday")] Tuesday,
[Description("Wednesday")] Wednesday,
[Description("Thursday")] Thursday,
[Description("Friday")] Friday,
[Description("Saturday")] Saturday
}
Mam już kod do obsługi, myEnum.Description()
który oczywiście zwróci opis ciągu.
W implementacji JsonConverter istnieje taka metoda:
public override bool CanConvert(Type objectType)
{
}
Próbuję dowiedzieć się, jak ustalić, czy objectType
jest to Enum
i zwrócić true, aby konwerter wiedział, że może przekonwertować ten obiekt. Ponieważ mam wiele Enum
, nie mogę dokładnie sprawdzić każdego z nich, więc liczyłem na bardziej ogólny sposób osiągnięcia tego.
Odpowiedzi:
Skorzystaj z
IsEnum
nieruchomości:źródło
return objectType.IsEnum
CanConvert
, będzie ona sprawdzać wiele różnych możliwych konwersji, a nie tylko plikenum
. W przeciwnym razie możesz po prostu użyćIsEnum
samej właściwości.Type.IsEnum jest tym, czego szukasz
źródło
Zupełnie źle zinterpretowałem to pytanie, skupiając się zbytnio na [Opisie], więc jeśli kiedykolwiek zechcesz sprawdzić, czy określone wyliczenie ma atrybut [description], czy nie (w przypadku, gdy json dopasowuje, gdy go nie ma), jest to jeden z możliwych sposobów sprawdzenia tego:
źródło