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

Dotnet Discussion :

extension d'un type par un IEnumerable


Sujet :

Dotnet

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    958
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 958
    Points : 141
    Points
    141
    Par défaut extension d'un type par un IEnumerable
    Bonjour,

    Je vois cet appel de fonction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
     
    var infoAffaireDto = _serviceOperation.GetHistoSO(operation.Numero).ToInformationProduitDCG()
    public static IEnumerable<InformationProduitDCG> ToInformationProduitDCG(this IEnumerable<HistoSO> listHistoSource)
    La méthode GetHistoSO renvoie un IEnumerable<HistoSO>.
    D'après la défintion que l'on voir la méthode ToInformationProduitDCG() etend un IEnumerable<HistoSO>.
    Ma question est la suivante :
    IEnumerable<HistoSO>. n'est pas un type , seul HistoSO en est un .

    Pourquoi la signature de la méthode ToInformationProduitDCG() est elle correcte dans ce cas ?

    Merci beaucoup de votre réponse.
    Il vaut mieux mobiliser son intelligence sur des conneries que mobiliser sa connerie sur des choses intelligentes. [SHADOKS]

  2. #2
    Membre confirmé Avatar de WaterTwelve21
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Décembre 2015
    Messages
    270
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Décembre 2015
    Messages : 270
    Points : 461
    Points
    461
    Par défaut
    Bonjour,

    IEnumerable<HistoSO>. n'est pas un type , seul HistoSO en est un
    Pourquoi IEnumerable<HistoSO> n'est pas un type ?
    IEnumerable<T> est autant un type que List<T> ou dictionnary<T,U> etc ...

    Ou alors j'ai pas bien compris le sens de ta question .
    throw new NoSignatureException();

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Janvier 2009
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Janvier 2009
    Messages : 21
    Points : 28
    Points
    28
    Par défaut
    Bonjour new_wave,

    IEnumerable<HistoSO> est une interface générique. On pourrait la décrire par la phrase "C'est une IEnumerable de HistoSO". Je ne pense pas que la question que tu formules soit envers IEnumerable lui-même, cela dit. Je te propose de découper un peu ton code pour mieux comprendre.

    La méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    _serviceOperation.GetHistoSO(operation.Numero)
    renvoie un objet IEnumerable<HistoSO>, c'est-à-dire une collection de plusieurs HistoSO.

    La méthode
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    public static IEnumerable<InformationProduitDCG> ToInformationProduitDCG(this IEnumerable<HistoSO> listHistoSource)
    prend en paramètre un objet IEnumerable<HistoSO>. C'est une méthode d'extension, d'ailleurs, ça permet notamment d'aller un peu plus rapidement dans le développement.

    Le code suivant fait exactement la même chose que ce que tu as rédigé dans ton message:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IEnumerable<HistoSO> collectionHistoSo = _serviceOperation.GetHistoSO(operation.Numero);
    IEnumerable<InformationProduitDCG> collectionInfoProdDCG = collectionHistoSo.ToInformationProduitDCG();
     
    public static IEnumerable<InformationProduitDCG> ToInformationProduitDCG(this IEnumerable<HistoSO> listHistoSource)
    Et si l'utilisation de méthodes d'extensions te perturbe un peu, sache ue le code suivant est toujours équivalent (note bien l'absence du mot-clé this ainsi que la manière d'utiliser la méthode):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    IEnumerable<HistoSO> collectionHistoSo = _serviceOperation.GetHistoSO(operation.Numero);
    IEnumerable<InformationProduitDCG> collectionInfoProdDCG = ToInformationProduitDCG(collectionHistoSo);
     
    public static IEnumerable<InformationProduitDCG> ToInformationProduitDCG(IEnumerable<HistoSO> listHistoSource)
    Est-ce plus clair pour toi ? Sinon, peux-tu développer un peu plus ta question ?

Discussions similaires

  1. Template et type par defaut
    Par jph_void dans le forum Langage
    Réponses: 12
    Dernier message: 01/09/2007, 16h21
  2. Liste des extensions de fichier gérée par Windows
    Par rezuss dans le forum Delphi
    Réponses: 2
    Dernier message: 10/07/2007, 17h21
  3. changer l'extension d'un fichier par VBA
    Par loic20h28 dans le forum VBA Access
    Réponses: 13
    Dernier message: 21/06/2007, 10h58
  4. Réponses: 4
    Dernier message: 11/09/2006, 12h43
  5. Extensions de fichiers gérées par Apache
    Par JoN28fr dans le forum Apache
    Réponses: 2
    Dernier message: 03/04/2006, 17h30

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