Disons que je le délégué suivant:Utiliser la réflexion pour trouver le nom d'un champ délégué
public delegate void Example();
et une classe comme les suivants:
public class TestClass {
Example FailingTest =() => Assert.Equal(0,1);
}
Comment puis-je utiliser la réflexion pour obtenir le nom "FailingTest"?
Jusqu'à présent, j'ai essayé:
var possibleFields = typeof(TestClass).GetFields(relevant_binding_flags)
.Where(x => x.FieldType.Equals(typeof(Example)));
foreach(FieldInfo oneField in possibleFields) {
// HERE I am able to access the declaring type name
var className = oneField.ReflectedType.Name; // == "TestClass"
// but I am not able to access the field
// name "FailingTest" because:
var fieldName = oneField.Name; // == "CS$<>9__CachedAnonymousMethodDelegate1"
}
Parcourant dans le débogueur, je ne peux pas trouver un chemin d'accès au nom du champ déclaré, « FailingTest ».
Cette information est-elle conservée lors de l'exécution ou est-elle perdue lors de l'attribution du délégué anonyme?
J'ai obtenu les mêmes résultats, en utilisant VS2008SP1. – Andy
Cela a fonctionné pour moi; d'une manière ou d'une autre j'ai manqué BindingFlags.Instance et j'essayais d'obtenir cette information du Type puis lu la valeur de la méthode anonyme de; en utilisant une instance a fait l'affaire. Merci! –