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