我有一个WCF服务,在其中有一些操作接受非泛型基类作为参数。
为了使其正常工作,我之前必须为Foo类注册KnownTypes,并包括所有可能的Bar变体,例如
然而,在.NET 4中使用DataContractResolver,我应该能够构建一个正确存储(和恢复)类的解析器。
我的问题:
1. DataContractResolvers通常只在服务端使用,而不是客户端吗?如果是这样,在这种情况下它会有什么用处?
2. 我是否错误地编写了一个DataContractResolver,它序列化了泛型类型的完全限定类型名称,例如
[DataContract]
class Foo
{ ... }
这个基类被一些泛型类继承,例如
[DataContract]
class Bar<T> : Foo
{ ... }
为了使其正常工作,我之前必须为Foo类注册KnownTypes,并包括所有可能的Bar变体,例如
Bar<string>
,Bar<int>
甚至Bar<List<string>>
。然而,在.NET 4中使用DataContractResolver,我应该能够构建一个正确存储(和恢复)类的解析器。
我的问题:
1. DataContractResolvers通常只在服务端使用,而不是客户端吗?如果是这样,在这种情况下它会有什么用处?
2. 我是否错误地编写了一个DataContractResolver,它序列化了泛型类型的完全限定类型名称,例如
Bar`1[List`1[string, mscorlib], mscorlib]
?同样的DataContractResolver在客户端上能否还原这些类型?