Сложный класс C#, возвращаемый службой API, не сериализуется правильно - PullRequest
0 голосов
/ 18 января 2020

Во время работы над простым ПО Blazor C у меня возникла проблема, которую я не могу решить, поэтому я надеюсь, что кто-то может помочь мне сделать это правильно ?. Хорошо, давайте объясним шаг за шагом. В VS2019 я создал следующее решение:

enter image description here

• WebClient: приложение на стороне сервера Blazor, содержащее пользовательский интерфейс и логику презентации c.

• Домен: является. NET Стандартом 2.1, содержащим логины домена c для торгового автомата.

• Api: используется для получения и сохранения состояния торгового автомата.

enter image description here

В проекте «Домен» 2 интересующих класса - это класс MyVendingMachine (который является сущностью) и класс Money (который является объектом значения). Итак, зная это, давайте сначала объясним вариант использования простого проекта PO C, показав соответствующий пользовательский интерфейс:

enter image description here

Итак, при запуске на экране появляется простой экран, и пользователь может ввести немного денег (ограничено 5 € -10 € -20 € -50 € банкнотами). Когда пользователь вводит деньги, «Деньги введены» показывает сумму денег, которую пользователь ввел, и затем пользователь может «купить закуску», которая добавит введенную сумму в торговый автомат. Например, пользователь вводит 5 €, пользовательский интерфейс будет обновляться следующим образом:

enter image description here

, затем нажимает кнопку «Купить закуску», затем пользовательский интерфейс обновляется следующим образом. :

enter image description here

Существует также другой вариант использования «Возврат денег», который возвращает введенные деньги клиенту. Это все отлично работает. Но другой вариант использования PO C - сохранение и загрузка текущего состояния торгового автомата из хранилища через API. Этот API довольно прост и возвращает вручную экземпляр торгового автомата и 50 € начальных денег внутри от контроллера API, как показано ниже:

enter image description here

Проще говоря, когда в конечной точке API get git мы создаем торговый автомат, удваиваем идентификатор запроса (просто для проверки, это происходит из API) и добавляем 50 € в качестве начального состояния для денег внутри. Когда мы проверяем этот запрос в Почтальоне, мы получаем следующий ответ:

enter image description here

Но при вызове из моего класса обслуживания API (который является частью следующий проект веб-приложения): enter image description here

Идентификатор правильный (поэтому мы знаем, что он был десериализирован из API), но MoneyInside не был правильно сериализован со значением получено из API (50 €). Таким образом, FiftyEuroCount в этом случае должен быть установлен в 1, что не является (значение: 0). Любая подсказка? Для полноты, классы MyVendingMachine и Money:

enter image description here

enter image description here

Kr, Эммануэль Нюйттенс.

...