Si j'ai une classe appelée MyProgram
, existe-t-il un moyen de récupérer " MyProgram " en tant que chaîne?
Essaye ça:
this.GetType().Name
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
Avec C # 6.0, vous pouvez utiliser l’opérateur nameof
:
nameof(MyProgram)
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;
Pour référence, si vous avez un type qui hérite d’un autre, vous pouvez également utiliser
this.GetType().BaseType.Name
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();
}
}
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 );
}
Obtenir le nom actuel de la classe Asp.net
string CurrentClass = System.Reflection.MethodBase.GetCurrentMethod().DeclaringType.Name.ToString();
this
peut être omis. Tout ce dont vous avez besoin pour obtenir le nom actuel de la classe est:
GetType().Name
MyProgram est un type que vous pouvez faire
typeof(MyProgram).Name