Comment obtenir le nom du fichier source et le numéro de ligne d'un type de membre?

Considérant que le déboguer le fichier de données est disponible (APB) et en utilisant soit Système.La réflexion ou un autre cadre similaire comme Mono.Cecil, comment récupérer par programmation le nom du fichier source et le numéro de la ligne où un type ou d'un membre d'un type est déclaré.

Par exemple, disons que vous avez compilé ce fichier dans une assemblée:

C:\MyProject\Foo.cs

1:    public class Foo
2:    {
3:       public string SayHello()
4:       {
5:           return "Hello";
6:       }
7:    }

Comment faire quelque chose comme:

MethodInfo methodInfo = typeof(Foo).GetMethod("SayHello");
string sourceFileName = methodInfo.GetSourceFile(); //?? Does not exist!
int sourceLineNumber = methodInfo.GetLineNumber(); //?? Does not exist!

sourceFileName contiendra "C:\MyProject\Foo.cs" et sourceLineNumber être égal à 3.

Mise à jour: System.Diagnostics.StackFrame est en effet en mesure d'obtenir cette information, mais seulement dans le cadre actuel de l'exécution de la pile des appels. Cela signifie que la méthode doit être appelée en premier. J'aimerais avoir la même info, mais sans invoquer le type de membre.

il y a une nouvelle API pour cela, pas besoin d'utiliser PDB reader plus, voir ma réponse

OriginalL'auteur Yann Trevin | 2008-09-24