IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Services Web Discussion :

Ienumarator & Ienumarable pas possible en web service?


Sujet :

Services Web

  1. #1
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut Ienumarator & Ienumarable pas possible en web service?
    Salut,

    Tout est dans le titre . J'ai une classe qui implémente ienumarable et qui fonctionne bien en dehors du contexte d'un web service mais dès que j'essaye de l'utiliser dans un web service, je me ramasse ceci:

    To be XML serializable, types which inherit from IEnumerable must have an implementation of Add(System.Object) at all levels of their inheritance hierarchy. GS1Users does not implement Add(System.Object).
    Et sincèrement, je ne vois pas trop quoi faire car la suggestion dans le message d'erreur me paraît un peu saugrenue.

    Une idée?

    Merci

  2. #2
    Membre habitué Avatar de Mourad
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 152
    Points : 161
    Points
    161
    Par défaut
    si je comprends bien t'es bien entrain de faire passer ta classe qui implémente Ienumerable en sortie d'une méthode de ton webservice... ?
    il n'y a pas de solution sans problème.

  3. #3
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Salut,

    Merci pour ta réponse mais finalement j'ai laissé tomber car ce n'était pas "indispensable". Et effectivement je retournais une occurrence de ma classe en sortie d'une web method. Note que si tu vois le problème, je suis preneur.

  4. #4
    Membre actif

    Inscrit en
    Décembre 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 175
    Points : 291
    Points
    291
    Par défaut
    Salut Stéphane,

    Ce ne serait pas lier au fait que tu dois definir le type des variables contenu dans ta collection ?

  5. #5
    Membre expert

    Profil pro
    Inscrit en
    Septembre 2002
    Messages
    1 581
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2002
    Messages : 1 581
    Points : 3 016
    Points
    3 016
    Par défaut
    Citation Envoyé par Plug
    Salut Stéphane,

    Ce ne serait pas lier au fait que tu dois definir le type des variables contenu dans ta collection ?
    Salut Plug,

    Que veux-tu dire? Je ne pense pas puisque si j'utilise exactement les mêmes classes implémentant IEnumarator et IEnumarable en dehors d'un web service, elles fonctionnent très bien. En fait, j'avais codé ça dans une DLL et j'ai référencé ma DLL dans mon WS et là...patatra à cause de IEnumerable.

  6. #6
    Membre actif

    Inscrit en
    Décembre 2005
    Messages
    175
    Détails du profil
    Informations forums :
    Inscription : Décembre 2005
    Messages : 175
    Points : 291
    Points
    291
    Par défaut
    Je pensais au problème des tableaux.

    Pour les web services, il faut définir le type d'objet contenu dans le tableau par des attributs du genre (je suis pas sur à 100% de l'attribut) pour que le tableau puisse être sérialisé en XML.

    Je me disais que l'on devait rencontrer le même genre de problème avec l'IEnumarable.

    C'est pour cette raison aussi que tu n'as pas de problème en dehors du WS puisque tu n'utilises peut être pas la sérialisation XML ?

    J'espère avoir été plus clair

  7. #7
    Rédacteur
    Avatar de Neitsa
    Homme Profil pro
    Chercheur sécurité informatique
    Inscrit en
    Octobre 2003
    Messages
    1 041
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chercheur sécurité informatique

    Informations forums :
    Inscription : Octobre 2003
    Messages : 1 041
    Points : 1 956
    Points
    1 956
    Par défaut
    Bonjour,

    je fais remonter ce topic parce que j'ai eu le même problème avec la sérialisation d'une classe implémentant IList<T> (IList<T> <- ICollection<T> <- IEnumerable<T> ).

    Même si le message d'erreur est assez parlant (il suffit d'ajouter une méthode public nommée "Add"), la cause en est assez obscure...

    En fait en cherchant (pas mal j'avoue), la cause en est donnée sur la MSDN :

    The XmlSerializer gives special treatment to classes that implement IEnumerable or ICollection. A class that implements IEnumerable must implement a public Add method that takes a single parameter. The Add method's parameter must be of the same type as is returned from the Current property on the value returned from GetEnumerator, or one of that type's bases. A class that implements ICollection (such as CollectionBase) in addition to IEnumerable must have a public Item indexed property (indexer in C#) that takes an integer, and it must have a public Count property of type integer. The parameter to the Add method must be the same type as is returned from the Item property, or one of that type's bases. For classes that implement ICollection, values to be serialized are retrieved from the indexed Item property, not by calling GetEnumerator.
    cf. la note au paragraphe "Overriding Default Serialization" de ce lien : http://msdn2.microsoft.com/en-us/lib...er(vs.80).aspx

    Si cela peut aider quelqu'un

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/04/2009, 10h03
  2. Réponses: 0
    Dernier message: 06/06/2008, 17h03
  3. je trouve asp.net web service mais pas asp.net web application
    Par question87 dans le forum Visual Studio
    Réponses: 1
    Dernier message: 22/04/2008, 21h26
  4. Est il possible de dployer tout un projet comme Web Service?
    Par KING_OF_GRACELAND dans le forum Services Web
    Réponses: 2
    Dernier message: 18/12/2007, 17h15

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo