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 Forms Discussion :

Passer un type en paramètres de procédure


Sujet :

Windows Forms

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut Passer un type en paramètres de procédure
    Bonjour,

    Est-il possible de passer un type d'objet en paramètres d'une procédure ?

    Par exemple, je crèe un UserControl MyUserControl() et je veux créer une instance de cette classe dans une procédure mais sans créer l'instance AVANT le passage dans la procédure.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MyProc( MyUserControl() )  ?
     
    private void MyProc( ?????? ) 
    {
     
    }
    J-L

  2. #2
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    MyProc(typeof(MyUserControl))
    où typeof renvoi un System.Type. Après, tu peut obtenir le constructeur de ce type avec la réflection (Type.GetConstructor) et l'appeler pour créer ton objet.

  3. #3
    Rédacteur/Modérateur


    Homme Profil pro
    Développeur .NET
    Inscrit en
    Février 2004
    Messages
    19 875
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Février 2004
    Messages : 19 875
    Par défaut
    Autre méthode possible (plus élégante à mon avis) : utiliser une méthode générique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    MyProc<MyUserControl>()
     
    private T MyProc<T>() where T : Control, new()
    {
        return Activator.CreateInstance<T>();
    }
    La clause where indique que T doit hériter de Control, et avoir un constructeur par défaut ("new()")

  4. #4
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    smyley:

    Mais dans cette façon de faire, comment je dois déclarer ma procédure ?
    Pour le paramètre qui représente la classe, j'utilise une construction standard ?

    private void MyProc(MyUserControl truc)

    ??

    tomlev:

    Génial ce truc !
    Question 1: Est-ce que ça fonctionen avec le framework 2.0 ?
    Question 2: Aurais-tu un lien vers une doc qui explique tout ça ?

  5. #5
    Expert confirmé
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Par défaut
    Citation Envoyé par Papy214 Voir le message
    private void MyProc(MyUserControl truc)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    private void MyProc(Type truc)
    Citation Envoyé par Papy214 Voir le message
    Question 1: Est-ce que ça fonctionen avec le framework 2.0 ?
    Oui

  6. #6
    Membre Expert

    Homme Profil pro
    Retraité
    Inscrit en
    Novembre 2007
    Messages
    3 530
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Novembre 2007
    Messages : 3 530
    Par défaut
    aarrgghhh ... pour ce projet, je dois me limiter au framework 2.0 et GetConstructor n'est disponible qu'en 3.5. Merci quand même ...

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

Discussions similaires

  1. Passer un CURSOR en paramètre à une procédure
    Par JamesP dans le forum PL/SQL
    Réponses: 16
    Dernier message: 25/10/2011, 15h50
  2. [Générique] Passer un type en paramètre
    Par WebManiaK dans le forum PL/SQL
    Réponses: 3
    Dernier message: 16/04/2011, 18h57
  3. Réponses: 2
    Dernier message: 03/12/2006, 12h37
  4. Réponses: 2
    Dernier message: 27/06/2006, 15h21
  5. passer un nom de champs en paramètre de procédure stockée
    Par dor_boucle dans le forum MS SQL Server
    Réponses: 4
    Dernier message: 06/02/2006, 19h10

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