Если вы сгенерируете клиента (используя svcutil или «добавить ссылку на сервис»), то сгенерированный DataContract будет выглядеть так:
[DataContract]
public class Customer
{
// empty default constructor
public Customer()
{
}
[DataMember]
public string FirstName
[DataMember]
public string LastName
[DataMember]
public Address CustomerAddress
}
Детали вашей реализации не перенесены. Все, что генерируется, - это то, что входит в WSDL, который в данном случае является просто [DataMember]
свойствами.
Я упоминаю об этом, потому что ваш оригинальный вопрос спрашивает: " Что произойдет, если я сгенерирую прокси ".
Если это объект, отправляемый с сервера на клиент, то вы всегда можете просто инициализировать CustomerAddress перед отправкой его клиенту. Фактически, если ваш исходный код находится на сервере, то этот конструктор будет запущен, и WCF будет сериализовать CustomerAddress
и в основном никогда не отправит ноль (если вы не установите его обратно в нуль после конструктора).
Если вы хотите сделать так, чтобы клиент всегда отправлял вам CustomerAddress
, то вы могли бы:
- имеет сервер проверка на ноль, как
if(x.CustomerAddress == null) x.CustomerAddress = new Address();
- пометьте DataMember как необходимый, тогда сервер вернет ошибку, если клиент ничего не передал:
[DataMember(IsRequired=true)] public Address CustomerAddress;
В противном случае, я не думаю, что есть какой-либо способ заставить сгенерированный клиент WCF инициализировать это поле для вас.