Наследование DataContract в WCF - PullRequest
1 голос
/ 14 февраля 2012

У меня есть DataContract, скажем, имя Credentials, которое я унаследовал в свой собственный бизнес-объект под названием MyCredentials и настроил. Я хочу отправить его по проводам, но по понятным причинам получаю ошибку.

Произошла ошибка при попытке сериализации параметра

Есть ли способ решить эту проблему без преобразования между бизнес-объектом и DataContracts? Моя работа с кодом выглядит примерно так

[DataContract]
[KnownType(typeof(Credentials))]
internal class MyCredentials : Credentials
{
    public MyCredentials ()
    {
    }
}

Ответы [ 2 ]

3 голосов
/ 14 февраля 2012

Вам необходимо украсить базовый класс Credientials с помощью атрибута KnownType.

[DataContract]
[KnownType(typeof(MyCredentials))]
publice class Credentials
{
    public Credentials()
    {
    }
}

Также я думаю, что вам нужно сделать класс общедоступным, а не внутренним, когда вы декорируете его с помощью DataContractAttribute.

[DataContract]
public class MyCredentials : Credentials {
  public MyCredentials () {
  }
}
0 голосов
/ 22 января 2013

Модификаторы доступности не влияют на DataContract после того, как это контракт.

...