2010-11-10 8 views
2

J'ai des objets CSLA (1.x framework) d'un projet existant que j'essaie d'utiliser dans un nouveau projet .Net 4.0. Les objets sont utilisés en production et je ne peux vraiment pas les convertir en 2.x ou EF sans avoir 2 ensembles d'objets.Pour être sérialisable XML, les types qui héritent de ICollection doivent avoir une implémentation de Add

Dans mon C# webservice (lorsque je tente de l'exécuter) Je reçois l'erreur suivante:

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). 

Comme je l'ai dit ces objets sont des objets AAPC écrits en vb.net. Je ne sais pas où regarder celui-ci. Est-ce un problème de .Net 4.0 essayant de parler à CSLA 1.x ou est-ce un problème de service Web (puisque ces objets n'ont jamais utilisé les services Web à l'origine)?

Quelqu'un a-t-il une idée de l'endroit où je devrais chercher à résoudre ce problème? Dois-je suggérer de convertir en CSLA 2.x?

Toutes les suggestions sont appréciées!

Répondre

5

Il s'agit d'une limitation XmlSerializer; Si quelque chose ressemble à une liste de données, il voudra ajouter des éléments à l'aide de la méthode Add.

Si vous avez accès à ces objets, pensez à ajouter une telle méthode. Je ne peux pas me rappeler s'il veut Add (object) vs Add (SomeType) alors essayez les deux.

Si vous n'avez pas de contrôle sur ces objets ... ce sera difficile. Il serait plus rapide d'écrire une nouvelle couche DTO pour les objets que d'essayer de la patcher d'une manière ou d'une autre.

+0

Merci pour votre réponse ... Que signifie DTO? J'ai le contrôle sur ces objets, mais ils sont également utilisés dans un autre projet, ce qui signifie que je devrais inclure plus de gens dans ce type de changement. Donc, votre option DTO est intrigante ... – webdad3

+0

@Jeff - Objet de transfert de données - c'est-à-dire un ensemble de classes * spécifiquement * aux fins de sérialisation –

+0

@Jeff - mais dans ce cas, il semble que vous devriez être en mesure d'ajouter les éléments manquants 'Ajouter'? –

Questions connexes