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 :

[C#] Accès à une méthode statique à partir d'une instance


Sujet :

C#

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut [C#] Accès à une méthode statique à partir d'une instance
    Bonjour à tous,
    Petite interrogation du jour : ?
    Comment puis-je accéder à une méthode statique à partir d'un objet ?
    En fait la méthode en question est un simple "get" sur une variable, est-il possible de la rendre accessible à un objet, autrement qu'en définissant une méthode supplémentaire non statique?

    Autre solution pour résoudre le problème : est-il possible de définir une variable de type "class", le but étant d'accéder à ses méthodes statiques.

    Enfin tout cela de façon "simple"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
    class_0
    {
       private static class_0 Instance;
     
       private static string _Name;
       public static string Name { get { return _Name; } }
    }
     
    class_0a : class_0
    {
       private static class_0a Instance = new class_0a();
       private class_0a () { _Name = "class 0a"; }
    }
     
    class_0b : class_0
    {
       private static class_0b Instance = new class_0b();
       private class_0b () { _Name = "class 0b"; }
    }
     
     
    // Illustration Solution 1
    class_1
    {
      public class_0 Classe;
      public class_1(class_0 objet)
      {
         Classe = objet;
      }
    }
     
    ...
    class_1 c1 = new class_1(new class_0a);
    MessageBox.Show(c1.Classe.Name);
     
    // Solution 1 possible, mais bofbof
    class_0
    {
       private static class_0 Instance;
     
       private static string _Name;
       public static string Name { get { return _Name; } }
       public string NameInstance { get { return _Name; } }
    }
     
    ...
    class_1 c1 = new class_1(new class_0a);
    MessageBox.Show(c1.Classe.NameInstance);
     
     
    // Illustration Solution 2 (préférée si possible)
    // quelque chose du genre : (bien sûr écrit comme ça c'est absurde, mais c'est l'idée)
    {
      public ref class Classe;
      public class_1(ref class objet)
      {
         Classe = objet;
      }
    }
     
    ...
    class_1 c1 = new class_1(ref class_0a);
    MessageBox.Show(c1.Classe.Name);
    Sachant que class_1 est instanciée. Les classes 0x n'ont pas besoin de l'être, et travaillant sur PDA, j'essaye d'éviter la création d'objets inutiles

    Une solution (autre que l'utilisation d'une classe type singleton) ?

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    si tu ne connais pas le nom de la classe pour le taper directement, c'est que tu dois etre en train de développer un truc compliqué
    donc tu seras pas à un près et je te propose la reflexion pour trouver les sub static d'une classe


    attention: code en vb ptete différent en c#
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    isntance_d_un_objet.gettype.getmethod("nom_de_la_sub",bindingflags pour dire static et public au moins).invoke
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Août 2007
    Messages
    106
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 106
    Par défaut
    Merci, c'est un peu à ça que je pensais, mais je ne voulais pas faire aussi compliqué! Tant pis, qd ya pas le choix...

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 24/05/2011, 11h05
  2. Réponses: 4
    Dernier message: 10/10/2010, 11h46
  3. Utiliser une méthode non-static dans une méthode static
    Par mcfly37 dans le forum Débuter avec Java
    Réponses: 3
    Dernier message: 18/08/2010, 11h41
  4. Réponses: 2
    Dernier message: 05/03/2010, 14h15
  5. Réponses: 9
    Dernier message: 29/10/2008, 23h17

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