Information sur la class

Signaler
Messages postés
572
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
4 mai 2020
-
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
-
Salut

est il possible de recuperer dans le code la class et le nom du fichier ?

thx

Herve

6 réponses

Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Salut,
En utilisant la reflection, tu peux recuperer un peu tout ce que tu veux sur tes classes, executer ses méthodes, etc. (mais pas recuperer le nom du fichier avant compilation)

Petit exemple vite fait

<hr />using

System;

using System.Reflection;

namespace ConsoleApp
{

   class
Program
   {

      static
void Main(
string[] args)
      {

         Assembly a =
Assembly.GetExecutingAssembly();

         Console.WriteLine(a.FullName); 

         Type t = a.GetType(
"ConsoleApp.Program"); 

         MethodInfo mi = t.GetMethod(
"SayHello",
BindingFlags.NonPublic |
BindingFlags.Static);

         Console.WriteLine(
"Appel de {0}", mi.Name);
         mi.Invoke(
null,
null);
      }

      
      private
static
void SayHello()
      {

         Console.WriteLine(
"Hello");
      }
   }
}
<hr />

Mx
MVP C# 
Messages postés
572
Date d'inscription
mardi 30 avril 2002
Statut
Membre
Dernière intervention
4 mai 2020

C'est en fait pour la gestion d'erreur...pour connaitre ou exactement il me leve des exceptions

Herve
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
21
Roohh Morpion tu me déçois :

StackFrame sf = new StackFrame(1, true);
string method = sf.GetMethod().ToString();
string fileName = sf.GetFileName();

Avec ceci tu récupèreras ce dont tu as besoin :)


::|The S@ib|::
MVP C#.NET
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
21
Mon navigateur pu du cul sur l'indentation.



Au passage tu peux avoir aussi la ligne exacte avec lineNumber.


::|The S@ib|::
MVP C#.NET
Messages postés
3466
Date d'inscription
lundi 16 octobre 2000
Statut
Modérateur
Dernière intervention
30 octobre 2008
54
Ouai, en effet ca peut rouler comme ca pour le nom de fichier
Encore faut-il que le PDB soit présent par contre il me semble, tu confirmes ? (J'ai rien pour tester devant moi)
Mx
MVP C# 
Messages postés
2368
Date d'inscription
mardi 17 avril 2001
Statut
Modérateur
Dernière intervention
26 décembre 2007
21
Oui logiquement, il te faut le PDB pour le nom de fichier, mais pour le reste pas besoin il peut s'en sortir tout seul.



::|The S@ib|::
MVP C#.NET