我有来自现有项目的 CSLA(1.x 框架)对象,我正尝试在新的 .Net 4.0 项目中使用这些对象。这些对象正在生产中使用,如果没有 2 组对象,我真的无法将它们转换为 2.x 或 EF。
在我的 c# 网络服务中(当我尝试运行它时)出现以下错误:
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 吗?
如有任何建议,我们将不胜感激!
最佳答案
这是 XmlSerializer 的限制;如果某物看起来像数据列表,它会希望通过 Add 方法向其中添加项目。
如果您有权访问这些对象,请考虑添加此类方法。我不记得它是想要 Add(object) 还是 Add(SomeType),所以请同时尝试。
如果您不能控制这些对象……那将很难。为对象编写一个新的 DTO 层比尝试以某种方式修补它会更快。
关于c# - 要使 XML 可序列化,从 ICollection 继承的类型必须具有 Add 的实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4147923/