我有一个WCF服务,其中有一些操作接受非泛型基类作为参数.
[DataContract]
class Foo
{ ... }
Run Code Online (Sandbox Code Playgroud)
这个基类继续由这样的泛型类继承
[DataContract]
class Bar<T> : Foo
{ ... }
Run Code Online (Sandbox Code Playgroud)
为了实现这一点,我之前必须为Foo类注册KnownTypes,并且这些包括Bar的所有可能变体(例如Bar<string>,Bar<int>甚至Bar<List<string>>).
但是,使用.NET 4中的DataContractResolver,我应该能够构建一个适当存储(和恢复)类的解析器.
我的问题:
DataContractResolvers通常仅用于服务端,而不是客户端吗?如果是这样,在这种情况下如何有用呢?
我编写一个DataContractResolver是错误的,它会序列化泛型类型的完全限定类型名称,例如Bar`1[List`1[string, mscorlib], mscorlib]?无法在客户端上的相同DataContractResolver恢复这些类型?