У меня есть набор DataContracts
, которые сериализуются через WCF.
Обратите внимание, что это очень упрощенный пример.
[DataContract]
public class MyData
{
[DataMember]
public List<int> MyList
{
get;
set;
}
}
Я бы хотел использовать объектно-ориентированный дизайн, чтобы сервер и клиент не создавали ненужных зависимостей. Например, я хотел бы инкапсулировать список, чтобы пользователь не мог напрямую изменить его.
В идеале, я бы хотел, чтобы класс выглядел так, если бы это не был DTO.
public class MyData
{
private List<int> _list = new List<int>();
public IEnumerable<int> MyList
{
get
{
return _list;
}
}
public void AddItem( int value )
{
_list.Add( value );
}
}
Я использую одну и ту же сборку C # как для службы, так и для клиента. Поэтому я могу добавить не DataMember
методы, но я не уверен, что это хороший подход. Это не пахнет совсем правильно для меня.
Есть ли у кого-нибудь умный способ рассматривать классы DTO больше как объекты вместо простых сериализуемых структур?