 <p>WCF does not directly works on abstract classes. You shall use KnownType attributes on the datacontract or service class. below are examples;</p> <pre><code>[DataContract] [KnownType(typeof(Client))] public class Contact { ... } [ServiceContract] [ServiceKnownType(typeof(Client))] public interface IMyService { contact getcontact(Guid id); } </code></pre>