Пользовательская XML-сериализация, применяемая только к свойствам - PullRequest
0 голосов
/ 29 июня 2018

Можно ли использовать пользовательский метод только в полях? Я могу сделать это с JsonConver. Мне просто нужно создать свой пользовательский класс, расширенный с помощью JsonConverter, и переопределить метод JsonWriter, чтобы в моих свойствах я мог пометить его своим пользовательским классом.

Пример использования Json:

public class CustomSerializer: JsonConverter
{
   public int Value {get; set;}

   public CustomSerializer(int value){               
      Value = value;
   }

   public override void WriteJson(JsonWriter writer, object value, JsonSerializer serializer)
   {
      // here my custom deserializer and i can use my prop Value
   }

   public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
   {
      // Here my custom serializer and i can use my prop Value           
   }
}

В моей модели с использованием JsonConverter я могу сделать это:

public class Person
{
    [JsonConverter(typeof(CustomSerializer))]
    public String Name{ get; set; }    
}

Поэтому, когда объект будет сериализован или десериализован с использованием JsonConvert, только оформленное поле получит пользовательскую обработку.

В своих поисках я обнаружил IXmlSerializer, который мы можем расширить, но он не работает с примитивными значениями.

...