c# - 要使 XML 可序列化,从 ICollection 继承的类型必须具有 Add 的实现

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

我有来自现有项目的 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/

相关文章:

c# - 在 C# 中返回 child of child 的计数

c# - 按 DateTime 列(小时)从 DataTable 中选择行

c# - 用于匹配复杂的多对多关系的 Linq 表达式

c# - 从 using 语句中修改值类型是未定义的行为吗?

java - 在 Java HttpsServer 中使用 Positive SSL Multi-Site Cert 时出现问题

c# - ASP.NET SQL Server 存储过程返回消息

html - 如何在验证失败时更改文本框的 CSS 类,然后在验证成功时再次将其更改回来?

asp.net - Dotnetopenauth,从 facebook 范围检索电子邮件

java - 如何编写客户端从Rest Web服务获取数据和图像文件

PHP - 表单提交后未设置 $_POST 变量