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

Windows Communication Foundation .NET Discussion :

[WCF] Generic method


Sujet :

Windows Communication Foundation .NET

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut [WCF] Generic method
    Je commence en WCF et j'ai vite rencontré un probleme avec les generic (dû au WSDL)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public TAircraft[] Get<TAircraft>() where TAircraft : Model.Aircraft
    Mon service host plante sur le open
    Comment faite vous pour bypassé cette limitation ? Je ne suis tout de meme pas pour me créé une method pour chaque type de TAircraft.

    J'ai essayer
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public object[] Get<TAircraft>() where TAircraft : Model.Aircraft
    Le service host passe, mais c'est à l'appel que jai l'exceptio
    Method Get is not supported on this proxy, this can happen if the method is not marked with OperationContractAttribute or if the interface type is not marked with ServiceContractAttribute
    Et oui, il est marquer comme OperationContract. Si je pouvais faire fonctionner de cette facon, je pourrais au moins wrapper localement mon service pour me retourner le bon type.

    Des spécialiste ?

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Par défaut
    Citation Envoyé par shwin Voir le message
    Je commence en WCF et j'ai vite rencontré un probleme avec les generic (dû au WSDL)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    public TAircraft[] Get<TAircraft>() where TAircraft : Model.Aircraft
    Mon service host plante sur le open
    Comment faite vous pour bypassé cette limitation ? Je ne suis tout de meme pas pour me créé une method pour chaque type de TAircraft.
    Il plante d'accord mais avec quel message d'erreur ?


    Sinon, t'as essayé ca ?

    public List<TAircraft> Get<TAircraft>() where TAircraft : Model.Aircraft

  3. #3
    Rédacteur
    Avatar de The_badger_man
    Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2005
    Messages
    2 745
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Janvier 2005
    Messages : 2 745
    Par défaut
    Il y a plusieurs solutions.

    Au niveau de la classe de base tu peux ajouter l'attribut KnownType en indiquant les types dérivés:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    [DataContract]
    [KnownType(typeof(typedérivé1))]
    [KnownType(typeof(typedérivé2))]
    public class TypedeBase
    Autre solution, appliquer l'attribut ServiceKnownType au niveau des opérations du contrat :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    [OperationContract]
    [ServiceKnownType(typeof(typedérivé1))]
    void MaMéthode(TypedeBase param);
    ou carrément au niveau du contrat lui même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    [ServiceContract]
    [ServiceKnownType(typeof(typedérivé1))]
    [ServiceKnownType(typeof(typedérivé2))]
    public interface IServiceContract
    { 
       [OperationContract]
       void MaMéthode(TypedeBase param);
    }
    Les règles du forum
    Le trio magique : FAQ + Cours + fonction rechercher
    Mes articles
    Pas de questions par messages privés svp

    Software is never finished, only abandoned.

  4. #4
    Membre émérite
    Avatar de shwin
    Profil pro
    Inscrit en
    Novembre 2003
    Messages
    568
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Novembre 2003
    Messages : 568
    Par défaut
    Je viens de lire dans mon livre de wcf qu'il est tout simplement impossible d'utiliser des unbound generic. Qu'il faut passé par des bounded generic.

    Merci quand meme pour votre aide!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 9
    Dernier message: 09/12/2008, 00h07
  2. [WCF] Injecter du code avant les methodes
    Par anthyme dans le forum Windows Communication Foundation
    Réponses: 8
    Dernier message: 17/08/2008, 23h07
  3. Method invoke avec List<generics>
    Par youx21 dans le forum Langage
    Réponses: 4
    Dernier message: 06/12/2007, 09h11
  4. Problème avec une generic method
    Par Pragmateek dans le forum Langage
    Réponses: 15
    Dernier message: 24/05/2006, 19h25
  5. Réponses: 1
    Dernier message: 27/12/2005, 18h55

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