在WCF中继承DataContract

本文关键字:DataContract 继承 WCF | 更新日期: 2023-09-27 18:24:45

我有一个DataContract,比如说Credentials,我已经将它继承到我自己的业务对象MyCredentials中并进行了自定义。我想通过电报发送,但可以理解的是我收到了一个错误。

尝试序列化参数时出错

有没有一种方法可以在不进行业务对象和DataContracts之间转换的情况下解决此问题?我的代码工作看起来像这个

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

在WCF中继承DataContract

您需要用KnownType属性装饰基类Credentials。

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

此外,我认为在使用DataContractAttribute对类进行装饰时,需要将其公开,而不是内部。

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

辅助功能修饰符不会影响DataContract,毕竟它是一个契约。