【问题标题】:Inheriting DataContract in WCF在 WCF 中继承 DataContract
【发布时间】:2012-03-05 17:38:16
【问题描述】:

我有一个名为CredentialsDataContract,我已将其继承到我自己的名为MyCredentials 的业务对象中并进行了定制。我想通过网络发送它,但可以理解的是我收到了一个错误。

尝试序列化参数时出错

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

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

【问题讨论】:

    标签: c# wcf wcf-binding


    【解决方案1】:

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

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

    我还认为,当您使用 DataContractAttribute 装饰该类时,您需要公开该类而不是内部类。

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

    【讨论】:

      【解决方案2】:

      可访问性修饰符不会影响 DataContract 毕竟它是一个合同。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-04-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多