Чтобы быть XML-сериализуемым, типы, которые наследуются от ICollection, должны иметь реализацию Add - PullRequest
3 голосов
/ 10 ноября 2010

У меня есть объекты CSLA (1.x framework) из существующего проекта, которые я пытаюсь использовать в новом проекте .Net 4.0.Объекты используются в производстве, и я действительно не могу преобразовать их в 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).

Как я уже говорил, эти объекты являются объектами CSLA, написанными на vb.net.Я не знаю, где посмотреть на это.Это проблема .Net 4.0, пытающаяся общаться с CSLA 1.x, или проблема веб-службы (поскольку эти объекты никогда не использовали веб-службы изначально)?

Кто-нибудь имеет представление о том, где я должен искать, чтобы выяснить эту проблему?Должен ли я предложить перейти на CSLA 2.x?

Любые предложения приветствуются!

1 Ответ

6 голосов
/ 10 ноября 2010

Это ограничение XmlSerializer; если что-то выглядит как список данных, он захочет добавить в него элементы с помощью метода Add.

Если у вас есть доступ к этим объектам, рассмотрите возможность добавления такого метода. Я не могу вспомнить, хочет ли он Add (объект) против Add (SomeType), поэтому попробуйте оба.

Если у вас нет контроля над этими объектами ... это будет сложно. Было бы быстрее написать новый слой DTO для объектов, чем пытаться как-то его исправить.

...