Можно ли использовать пользовательский метод только в полях? Я могу сделать это с 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, который мы можем расширить, но он не работает с примитивными значениями.