JsonConverter на основе пользовательского атрибута - PullRequest
1 голос
/ 21 сентября 2019

Я пытаюсь преобразовать определенное поле IDictionary определенного класса по-другому.Я думал сделать это на основе атрибута, но, похоже, это не сработает.Можно ли как-то получить CustomAttribute, связанный с типом в CanConvert?

 [CustomAttribute]
 public IDictionary<string, string> AdditionalData { get; set; }

 // Custom converter for CustomAttribute
 public override bool CanConvert(Type objectType)
 {
     return System.Attribute.GetCustomAttributes(objectType).Any(v => v is CustomAttribute);
 }

1 Ответ

3 голосов
/ 21 сентября 2019

Если вы хотите использовать атрибут для применения конвертера к определенному свойству, просто используйте атрибут [JsonConverter].Нет необходимости изобретать свои собственные.

[JsonConverter(typeof(YourCustomConverterClass))]
public IDictionary<string, string> AdditionalData { get; set; }

Обратите внимание, что если вы применяете атрибут [JsonConverter], вам больше не нужно передавать экземпляр этого преобразователя в сериализатор.Кроме того, метод CanConvert конвертера не будет вызываться для этого свойства, поскольку Json.Net уже знает, что вы хотите использовать конвертер с ним.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...