【问题标题】:To be XML serializable, types which inherit from ICollection must have an implementation of Add要成为 XML 可序列化的,从 ICollection 继承的类型必须具有 Add 的实现
【发布时间】:2010-11-10 18:50:14
【问题描述】:

我有来自现有项目的 CSLA(1.x 框架)对象,我试图在新的 .Net 4.0 项目中使用这些对象。这些对象正在生产中使用,如果没有 2 组对象,我真的无法将它们转换为 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?

欢迎提出任何建议!

【问题讨论】:

    标签: c# asp.net web-services oop csla


    【解决方案1】:

    这是一个 XmlSerializer 限制;如果某样东西看起来像一个数据列表,它会希望通过 Add 方法向其中添加项目。

    如果您有权访问这些对象,请考虑添加此类方法。我不记得它是否想要 Add(object) 与 Add(SomeType) 所以两者都试试。

    如果您可以控制这些对象...那就很难了。为对象编写一个新的 DTO 层比尝试以某种方式修补它要快。

    【讨论】:

    • 感谢您的回答... DTO 代表什么?我确实可以控制这些对象,但是它们也被用于另一个项目,这意味着我必须让更多的人参与到这种类型的改变中。所以你的 DTO 选项很有趣......
    • @Jeff - 数据传输对象 - 即一组专门用于序列化目的的类
    • @Jeff - 但在这种情况下,您应该可以只添加缺少的 Add?
    猜你喜欢
    • 2016-10-24
    • 2013-05-26
    • 2021-04-04
    • 2010-09-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-12-05
    • 2016-06-18
    相关资源
    最近更新 更多