Можете ли вы изменить это с Is A на Has? Если ServiceObject имеет EnterpriseObject, вы можете предоставить только те свойства, которые вам нужны.
Редактировать
Если я правильно понимаю, вы хотите предоставить ServiceObject клиентам, включая все его свойства (помеченные как DataMember), включая свойства, унаследованные от EnterpriseObject. Но вы не хотите, чтобы клиент знал, что существует объект с именем EnterpriseObject.
Вы можете сделать это, скрыв тот факт, что есть объект предприятия. Вместо использования отношения «Is A», которое является паттерном наследования. Вы можете использовать композицию или шаблон «Имеет A».
public class ServiceObject
{
private EnterpriseObject _myEntObject;
public string MyServiceObjectProperty
{
get;
set;
}
public string MyEntObjectProperty
{
get { return _myEntObject.MyEntObjectProperty;}
}
}
Теперь вы изолировали ваш EnterpriseObject от вашего клиента. Все ваше общение заключается в том, что ServiceObject имеет некоторые свойства, которые вы не предоставляете своему клиенту, что это реализовано на сервере другим объектом.
Это также похоже на наличие DTO, единственной целью которого является передача данных. DTO позволяют скрыть вашу реализацию, предоставляя вашим клиентам именно то, что им нужно, в нужном формате, не раскрывая ваши внутренние объекты.