WCF派生的DataContract不继承基本DataContract的属性

时间:2014-02-12 03:33:37

标签: c# wcf inheritance

以下是我的WCF DataContract基类

  [DataContract]
    public class BaseClass
    {
       //some datamembers
    }

这是我的派生类......

 [DataContract]
    public class DerivedClass1 : BaseClass
    {
       [DataMember]
       public string ProductName{get;set;}
    }

由于需求发生了一些变化,我添加了一个派生类型,它也具有相同的属性'ProductName'。

现在代码结构就是......

 [DataContract]
        public class BaseClass
        {
           //some datamembers
           [DataMember]
           public string ProductName{get;set;}
        }

[DataContract]
        public class DerivedClass1 : BaseClass
        {
           //[DataMember]
           //public string ProductName{get;set;}  property moved to base class
        }

[DataContract]
            public class DerivedClass2 : BaseClass
            {
               //some datamembers specific to DerivedClass2
            }

所以我将属性'ProductName'移到了基类。但是现在当从客户端调用现有的datacontract返回Derivedclass1的列表时,我没有看到productName作为响应。不知何故,我的DerivedClass1并没有从baseget属性productName属性。 可能是什么原因?编写代码时我是否犯了错误?

2 个答案:

答案 0 :(得分:0)

尝试对派生类使用[KnownType(typeof(BaseClass))]属性,并确保更新服务引用。

答案 1 :(得分:0)

我试过这个并且工作正常!

Base Type

这是SubClass SychRequests

Child class

这就是我在Intellisense中得到的。

Working

你还缺少什么,不能说什么。如果您在响应中看不到 ProductName ,那可能是因为您没有在请求中发送。