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

C# Discussion :

retour du type de la classe qui se base sur une classe générique


Sujet :

C#

  1. #1
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut retour du type de la classe qui se base sur une classe générique
    Bonjour,

    Je suis novice en C#, et j'essaie de mettre en place des classes génériques.

    Je crée ma classe ainsi que les autres classes qui en héritent jusque là pas de problème.

    Ensuite j'essaie de créer une méthode qui retournerait un élément du même type que les classes qui en héritent.

    Apparemment c'est possible mais je n'arrive pas à voir comment faire j'ai cherché sur le net mais je n'ai rien compris.

    Voici un exemple de code

    pour ma classe générique :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static AutomateGenerique<T> Load(string nomFichier)
            {
                // Chargement des coefficients pour le calcul des BP
                ObjectXMLSerializer objectXMLSerializer = new ObjectXMLSerializer();
     
                AutomateGenerique<T> items = new AutomateGenerique<T>();
     
                items = (AutomateGenerique<T>)objectXMLSerializer.Load(items, nomFichier, SerializedFormatType.Document);
     
                return items;
            }
    Ensuite pour une des classes qui en hérite (instanciation de ma classe)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FEFExchangeFile test;
                test = FEFExchangeFile.Load("D:\\Privé\\yperollet\\Projet\\Bradley\\Fichiers\\API_1123_41_ALI.xef");
    Le type FEFExchangeFile est le type qui hérite de ma classe AutomateGénérique

    Si quelqu'un avait une solution cela me serait trés utiles car je commence à nager un peu

    Merci d'avance pour vos réponses

  2. #2
    Membre averti

    Inscrit en
    Septembre 2004
    Messages
    105
    Détails du profil
    Informations forums :
    Inscription : Septembre 2004
    Messages : 105
    Points : 339
    Points
    339
    Par défaut
    Change ta méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    public static T Load<T>(string nomFichier) where T : new()
            {
                // Chargement des coefficients pour le calcul des BP
                ObjectXMLSerializer objectXMLSerializer = new ObjectXMLSerializer();
     
                T item = new T();
     
                item = (T)objectXMLSerializer.Load(items, nomFichier, SerializedFormatType.Document);
     
                return item;
            }
    Et met la dans une classe utilitaire; elle n'a pas besoin d'être dans AutomateGenerique<T>.

    Pour l'utiliser:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    FEFExchangeFile test;
                test = Util.Load<FEFExchangeFile>("D:\\...\\API_1123_41_ALI.xef");

  3. #3
    Membre actif Avatar de maxeur
    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    416
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 416
    Points : 267
    Points
    267
    Par défaut
    Merci beaucoup

    je viens d'essayer ta solution ca marche nickel.

    Je m'étais un peu embrouiller les pinceaux

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 27/08/2011, 01h02
  2. Réponses: 0
    Dernier message: 22/04/2010, 10h41
  3. Réponses: 3
    Dernier message: 03/03/2010, 11h48
  4. Réponses: 6
    Dernier message: 21/05/2006, 20h37
  5. Réponses: 14
    Dernier message: 14/03/2005, 09h16

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