在WCF中继承DataContract

时间:2012-02-14 10:39:54

标签: c# wcf wcf-binding

我有DataContract称为Credentials,我将其继承到我自己的业务对象MyCredentials并自定义。我想通过网络发送它,但可以理解的是我收到了错误。

  

尝试序列化参数

时出错

有没有办法解决这个问题,而无需在业务对象和DataContracts之间进行转换?我的代码工作看起来像这样

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

2 个答案:

答案 0 :(得分:3)

您需要使用KnownType-Attribute装饰基类Credientials。

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

此外,我认为当您使用DataContractAttribute修饰它时,您需要将类设为public而不是internal。

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

答案 1 :(得分:0)

辅助功能修饰符在合同完成后不会影响DataContract。