Как сделать «независимый» (datacontainer) -класс в C #, содержащий данные из другого класса?(Провисание / JSON, связанный с) - PullRequest
1 голос
/ 12 марта 2019

Моя проблема немного сложна.Это происходит следующим образом: я получаю через HTTPClient ответы от (в моем случае) Slack -API.Эти данные отправляются как JSON, поэтому я десериализую их в подходящие объекты (классы), которые я написал для этого.До сих пор я просто обрабатывал данные непосредственно из этих контейнеров.Но теперь мой начальник сказал: «Что если Slack что-то изменит, и эти вещи внезапно будут называться по-разному? - Нам нужен независимый контейнер, который предоставляет полученные данные, всегда с одинаковыми именами! Поэтому, когда мы реализуем ваш .dll, мы никогдадолжны заботиться об этих изменениях, только вы должны реорганизовать / переименовать ваши классы / участников ".Я полностью понимаю его точку зрения.Но я не могу понять, как бы я это сделал.Как я уже сказал, эти контейнеры являются классами, которые я написал, и когда я хочу создать другой контейнер, который может взять требуемые данные и сохранить их, я всегда сталкиваюсь с тем фактом, что не могу преобразовать эти типы объектов в другие типы объектов.Как я мог это сделать?Я старался всеми возможными способами, и теперь я застрял ...

У кого-нибудь есть идея или просто совет?Может быть, есть гораздо более простое решение моей проблемы, и я не вижу его.Вот почему я написал, что мой босс хочет от меня в этом случае.

Извините за заголовок этого вопроса, я не знал, что еще написать.

1 Ответ

3 голосов
/ 12 марта 2019

Вы можете иметь слабые имена связанных свойств, определенные через атрибут JsonProperty. Таким образом, вам нужно всего лишь изменить несколько строк вместо изменения имен свойств и рефакторинга частей приложений (включая, возможно, пользовательский интерфейс, если вы отправляете эти объекты непосредственно в пользовательский интерфейс)

using Newtonsoft.Json;
[JsonProperty(PropertyName = "SlackPropName")]
public string MyPropName { get; set; }
...