要成为可XML序列化的类型,继承自ICollection的类型必须实现Add方法。

3

我有一个现有项目中的CSLA(1.x框架)对象,我想在一个新的.Net 4.0项目中使用它们。这些对象正在生产中使用,如果没有两组对象,我真的无法将它们转换为2.x或EF。

在我的C# Web服务中(当我尝试运行它时),我遇到了以下错误:

To be XML serializable, types which inherit from ICollection must
have an implementation of Add(objectname.object) at all levels
of their inheritance hierarchy. objectname.objectList does not
implement Add(objectname.object).

就像我说的,这些对象是用vb.net编写的CSLA对象。 我不知道在这个问题上应该看哪里。 这是.Net 4.0试图与CSLA 1.x通信的问题还是Web服务问题(因为这些对象最初从未使用过Web服务)?

有人知道我应该在哪里查找解决此问题的方法吗? 我应该建议转换为CSLA 2.x吗?

欢迎提出任何建议!

1个回答

7
这是XmlSerializer的一个限制;如果某些内容看起来像数据列表,它将希望通过Add方法向其添加项目。
如果您可以访问这些对象,请考虑添加此类方法。我不记得它想要Add(object)还是Add(SomeType),所以请尝试两者。
如果您无法控制这些对象...那么会很困难。编写新的DTO层比尝试修补它更快。

感谢您的回答...DTO是什么意思?虽然我有这些对象的控制权,但它们也在另一个项目中被使用,这意味着我必须将更多的人纳入到这种变化中。所以你的DTO选项很有趣... - webdad3
@Jeff - 数据传输对象 - 即一组类,专门用于序列化目的。 - Marc Gravell
@Jeff - 但在这种情况下,听起来你应该只需要添加缺失的“Add”? - Marc Gravell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接