小编Ben*_*son的帖子

在WCF中使用自定义DataContractResolver,以传输涉及泛型的继承树

我有一个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,我应该能够构建一个适当存储(和恢复)类的解析器.

我的问题:

  1. DataContractResolvers通常仅用于服务端,而不是客户端吗?如果是这样,在这种情况下如何有用呢?

  2. 我编写一个DataContractResolver是错误的,它会序列化泛型类型的完全限定类型名称,例如Bar`1[List`1[string, mscorlib], mscorlib]?无法在客户端上的相同DataContractResolver恢复这些类型?

.net c# wcf datacontract

7
推荐指数
1
解决办法
7351
查看次数

标签 统计

.net ×1

c# ×1

datacontract ×1

wcf ×1