web-dev-qa-db-fra.com

C # obtenant son propre nom de classe

Si j'ai une classe appelée MyProgram, existe-t-il un moyen de récupérer " MyProgram " en tant que chaîne?

349
deltanovember

Essaye ça:

this.GetType().Name
584
micahtan

Je voulais jeter cela pour faire bonne mesure. Je pense que la manière indiquée par @micahtan est préférable.

typeof(MyProgram).Name
185
ChaosPandion

Avec C # 6.0, vous pouvez utiliser l’opérateur nameof :

nameof(MyProgram)
137
Cyanfish

Bien que la réponse de micahtan soit bonne, cela ne fonctionnera pas de manière statique. Si vous voulez récupérer le nom du type actuel, celui-ci devrait fonctionner partout:

string className = MethodBase.GetCurrentMethod().DeclaringType.Name;
117
Thomas Levesque

Pour référence, si vous avez un type qui hérite d’un autre, vous pouvez également utiliser

this.GetType().BaseType.Name
14
mikeschuld

Si vous en avez besoin dans les classes dérivées, vous pouvez mettre ce code dans la classe de base:

protected string GetThisClassName() { return this.GetType().Name; }

Ensuite, vous pouvez atteindre le nom dans la classe dérivée. Retourne le nom de la classe dérivée. Bien entendu, lorsque vous utiliserez le nouveau mot-clé "nameof", vous n'aurez plus besoin de cet acte.

En plus, vous pouvez définir ceci:

public static class Extension
{
    public static string NameOf(this object o)
    {
        return o.GetType().Name;
    }
}

Et puis utilisez comme ceci:

public class MyProgram
{
    string thisClassName;

    public MyProgram()
    {
        this.thisClassName = this.NameOf();
    }
}
10
bafsar

Utilisez ceci 

Disons que Application Test.exe est en cours d'exécution et que la fonction est foo () in form1 [à la base, il s'agit de class form1], le code ci-dessus générera alors la réponse.

string s1 = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name;

Cela va revenir. 

s1 = "TEST.form1"

pour le nom de la fonction: 

string s1 = System.Reflection.MethodBase.GetCurrentMethod().Name;

reviendra

s1 = foo 

Notez que si vous voulez utiliser ceci comme exception, utilisez:

catch (Exception ex)
{

    MessageBox.Show(ex.StackTrace );

}
8
Harshal Doshi Jain

Obtenir le nom actuel de la classe Asp.net 

string CurrentClass = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name.ToString();
1
Abbas ali

this peut être omis. Tout ce dont vous avez besoin pour obtenir le nom actuel de la classe est: 

GetType().Name
0
Mikael Engver

MyProgram est un type que vous pouvez faire 

typeof(MyProgram).Name
0
nPcomp