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