0

我有:

[DataContract]
public class A 
{ 
    [DataMember]
    public int X { get; set; }
}

[DataContract]
[KnownType(typeof(Derived<A>))]
public class Base {}

[DataContract]
public class Derived<T>: Base { 

    [DataMember]
    public T Data {get; set; } 

}

服务方法返回包含派生类对象的基类的 IEnumerable。自动生成的 WCF 客户端检索数据并正确检测类型并创建 Derived 类的实例,但 Derived.Data.X 未映射,即具有 0。收到的 soap 消息是正确的。为什么派生类的泛型属性没有从客户端的肥皂消息正确映射的任何想法?

4

1 回答 1

2

我强烈建议您在服务合同中避免使用泛型。SOA 世界对服务契约中的泛型类型并不友好。请看别人报告的问题:

更新服务引用时出错。无法识别 URI 前缀

WCF。服务通用方法

WCF 泛型属性未映射到派生类中

http://social.msdn.microsoft.com/Forums/vstudio/en-US/2a9a2fc6-9e01-4112-8948-4192c516c6e7/how-to-use-generics-in-wcf-service

于 2013-10-19T20:45:31.973 回答