Я только что провел небольшой тест, используя службу WCF, которая возвращает базовый объект, у которого нет конструктора по умолчанию.
//[DataContract]
//[Serializable]
public class MyObject
{
public MyObject(string _name)
{
Name = _name;
}
//[DataMember]
public string Name { get; set; }
//[DataMember]
public string Address { get; set; }
}
Вот как выглядит сервис:
public class MyService : IMyService
{
#region IMyService Members
public MyObject GetByName(string _name)
{
return new MyObject(_name) { Address = "Test Address" };
}
#endregion
}
Это действительно работает, если MyObject является [DataContract] или [Serializable]. Интересно, что он не нуждается в конструкторе по умолчанию на стороне клиента. Здесь есть соответствующий пост:
Как десериализация WCF создает объекты без вызова конструктора?