我正在读reference page哪些类型可由WCF序列化,并且它对哪些类型是自动KnownType不明确,哪些不是。任何人都可以对此有所了解吗?例如,如果我的DataContract有一个Object类型的成员,那么如果我传递一个字符串,它将会很好地序列化,但如果我传递一个Dictionary,则不会。字典将需要一个KnownType,尽管在该页面中被提及为支持。有了这个我有两个问题:找出对象的实例是否是WCF中的DataContract可序列化的
所以问题是,什么是自动KnowType WCF总是使用?
我需要的代码将确定如果默认情况下对象的实例是KnownType。一种解决方案是从1的答案中提出一个详尽的列表,然后用“obj is type”语句检查每个对象,但这似乎是一个糟糕的实现。有更聪明的方法吗?
编辑:
这reference列出了默认情况下知道的类型。所有原语少于DateTimeOffset加XmlElement。所以只剩下两个:如果一个对象是原始类型,我怎么知道?
编辑2: typeof(obj).IsPrimitive将完成大部分工作!
您至少有部分错误。 KnownType也用于其他目的。例如,如果我不为Dictionary添加KnownType,我会得到序列化异常。你也没有回答我的两个问题:-(我是低调的,但是如果你编辑答案来真正解决我的问题,我会再回来。再一次,我不会问关于KnownType的作用。 –
2010-12-04 19:50:42