Здравствуйте! Краткое описание ситуации: есть сущности, которые хранятся в базе данных и располагаются в слое доступа к данным. Для каждой сущности в слое бизнес логики есть свой класс DTO, который используются для передачи данных на клиент, содержит необходимые дополнительные свойства и ничего не знает про сущность. Сущность также ничего не знает про DTO.
Для того, чтобы преобразовать сущность в DTO и обратно в каждом классе я сделал два метода - GetProperties и Initialize, первый возвращает все свойства в виде словаря IDictionary, а второй метод получает на вход словарь и из него заполняет свойства. В итоге при добавлении нового свойства приходится обновлять и эти методы, что время от времени забывается, да и утомляет. Вот как, примерно, это выглядит:
public override IDictionary<string, object> GetProperties()
{
var baseProperties = base.GetProperties();
var properties = new Dictionary<string, object>()
{
{"Name", this.Name},
{"PhoneNumber", this.PhoneNumber},
{"Email", this.Email}
};
return baseProperties.Union(properties).ToDictionary(d => d.Key, d => d.Value);
}
public override void Initialize(IDictionary<string, object> properties)
{
base.Initialize(properties);
this.Name = (string)properties["Name"];
this.PhoneNumber = (string)properties["PhoneNumber"];
this.Email = (string)properties["Email"];
}
Собственно, вопрос. Возможно ли сериализовать свойства сущности как словарь объектов, а потом из этого словаря объектов десериализовать обратно в свойства сущности? Иои может можно это делать с помощью сериализации в Json? Или можно сделать какой-то свой аттрибут, которым помечать нужные свойства? Буду рад любой информации, заранее спасибо!