WCF. Как добавить пользовательские типы DataContact в ссылку на клиент WCF?

У меня есть служба WCF с методом:

[OperationContract]
public bool TestCustomRequest(RequestBase request)
{
    return true;
}

В указанном проекте библиотеки классов у меня есть 2 класса:

[DataContract]
public abstract class RequestBase
{
    [DataMember]
    public string Id { get; set; }

    [DataMember]
    public RequestTypeEnum RequestType { get; set; }
}

И унаследованный класс:

[DataContract]
public class CustomRequest : RequestBase
{
    [DataMember]
    public string CompanyId { get; set; }
}

Когда на стороне клиента я добавляю ссылку на сервис, я вижу только RequestBase учебный класс. Можно ли добавить все классы, которые наследуют RequestBase в сервисную ссылку и инициализировать их на стороне клиента?

Или я должен перегрузить TestCustomRequest метод для каждого возможного входящего типа параметра?

Спасибо

1 ответ

Решение

Вы можете попробовать:

[DataContract]
[KnownType(typeof(CustomRequest))]
public abstract class RequestBase
{
    [DataMember]
    public string Id { get; set; }

    [DataMember]
    public RequestTypeEnum RequestType { get; set; }
}
Другие вопросы по тегам