Написание собственного JsonConverter для объектов-значенийC#

Место общения программистов C#
Ответить
Anonymous
 Написание собственного JsonConverter для объектов-значений

Сообщение Anonymous »


У меня есть общий класс ValueObject, подобный этому

публичный абстрактный класс ValueObject: IEquatable, Сопоставимый, IComparable { защищенный абстрактный IEnumerable GetEqualityComponents(); } у этого класса нет свойств. Чтобы реализовать объект значения, я могу создать любой новый класс, подобный следующему

публичный запечатанный класс PersonName : ValueObject { Private PersonName (строка firstName, строка middleName, строка LastName) { Имя = Имя; MiddleName = MiddleName; Фамилия = фамилия; } общественная строка FirstName {get; частный набор; } общественная строка MiddleName {get; частный набор; } общественная строка LastName {get; частный набор; } public static PersonName Create(string firstName, string middleName, string LastName) { //Проверяем ввод и создаем объект вернуть новое PersonName(firstName, middleName, LastName); } защищенное переопределение IEnumerable GetEqualityComponents() { доходность возврата FirstName; доходность возврата MiddleName; выходной возврат Фамилия; } } Обратите внимание, что
[*]объект имеет единственный частный конструктор. [*]свойства имеют частные настройки [*]создание объекта происходит с помощью одного статического метода Create
Я борюсь с сериализацией и десериализацией json с помощью Newtonsoft.Json. Я также попытался понять логику этого ответа и исходный исходный код, на который он ссылается.

Я пытаюсь создать универсальный JsonConverter, который, по сравнению с тем, который показан в связанном ответе, сможет
[*]получить статический метод Create [*]используйте этот метод для создания объекта во время десериализации, сопоставляя параметры по имени.
Есть ли способ добиться этого?

ИЗМЕНИТЬ

Я забыл упомянуть, что меня устраивает сериализация с использованием объектов-значений внутри любого другого класса, например, при использовании в таком классе

публичный класс Индивидуальный { публичное имя PersonName {get; } публичная строка Гражданство {get; } } Я могу сериализовать json вот так
{ "$type":"Entities.Individual, myassembly", "имя":{ "$type":"ValueObjects.PersonName, myassembly", "firstName": "Джон", "второе имя": "", "lastName": "Уэйн" }, «гражданство»: «Американское» }
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»