【发布时间】:2009-02-05 13:47:50
【问题描述】:
我真的很喜欢 TWith2Sugars 发布的 here 的扩展方法。我遇到了一个奇怪的问题。当我将它放入共享类库并调用序列化函数时,出现以下错误:
MyType 类型不是预期的。采用 XmlInclude 或 SoapInclude 属性来指定类型是 静态未知。
我环顾了一下,发现 XmlSerializer 只能序列化它知道的类型。我将其解释为类库中的类,而不是我基于该库构建的项目。
有没有办法解决这个问题?这个函数可以放在类库中还是需要放在每个使用它的项目中?
更新:
我找出了导致问题的原因。我有以下代码:
object o = new MyClass();
o.Serialize();
这是导致错误的原因。当我将代码更改为:
MyClass c = new MyClass();
c.Serialize();
一切运行良好。所以,吸取教训 - 不要尝试(反)序列化通用对象。我最喜欢我引用的链接的一点是,我不必在我的类上放置任何 XML 属性标签。扩展方法刚刚奏效。
出于结束问题的目的,我会将答案奖励给扩展 Marc's answer(包括 Marc)的任何人,并附上说明 [XmlInclude] 用法的代码示例。
【问题讨论】:
标签: c# serialization extension-methods