Моя модель предметной области выглядит следующим образом:Как избежать логики сохранения в модели домена?
class Group
{
private List<Person> persons;
public void AddPerson(Person p) {
persons.Add(p);
DoSideEffect()
}
public List<Person> GetPersons() {...}
}
Теперь мне нужно упорствовать его. По DDD я не могу добавить никаких атрибутов персистентности к этому классу, поэтому сериализаторы XML не будут работать. BinaryFormatter не может использоваться, поскольку формат должен быть доступен для чтения. Я могу вручную вызвать GetPersons() и сохранить их, но как я их загружу? Если я вызываю AddPerson(), тогда возникает побочный эффект. Побочный эффект должен произойти только тогда, когда человек «действительно» добавлен в домен, а не с постоянством.
Как XmlSerializer может работать с закрытыми полями? –
@Yaron; ах, нет, не может. DataConractSerializer * может * хотя. Как может protobuf-net «v2», если вы не возражаете против двоичного кода. Я знаю, что последний поддерживает модели без атрибутов («Потому что я написал это»). –
@Yaron - другой подход - это выделенный слой DTO. –