Кто-нибудь знает хороший метод или шаблон, где я могу дать иерархии простых классов старой модели возможность конвертировать их из и в Json строк, в то время как
- Использование внедрения зависимостей для JsonConverter зависимость
- Относительно реализации c для JsonConverter
- Возможность быстро предоставить классу JSON возможность без большого количества кода
- Использование ToString () как удобный метод для отображения содержимого объектов в виде Json string
- Соблюдение правил чистого кодирования?
Я начал с идеи ниже, однако обнаружил, что следующее возникают проблемы:
- Когда у меня есть десятки классов моделей и я использую их во многих местах, мне всегда приходится передавать конвертер каждому классу модели и, очевидно, каждому классу, использующему класс модели. Это похоже на вирус.
- Когда я хочу преобразовать строки Json обратно в объекты, я не могу использовать конструктор с внедренной зависимостью, поскольку это преобразователь Json, который создает объекты.
Пример кода (еще не компилируется):
public abstract class JsonObj
{
private readonly IJsonConverter jsonConverter;
protected JsonObj(IJsonConverter jsonConverter) => this.jsonConverter = jsonConverter;
public virtual string ToJson() => jsonConverter.Serialize(this);
public static JsonObj FromJson(string json, Type type) => jsonConverter.Deserialize(json, type);
public override string ToString() => ToJson();
}
public class OneOfManyModelObjects : JsonObj
{
public OneOfManyModelObjects(IJsonConverter jsonConverter) : base(jsonConverter) { }
public static OneOfManyModelObjects FromJson(string json) => FromJson(json, typeof(OneOfManyModelObjects)) as OneOfManyModelObjects;
}