D'accord, j'ai une interface, permet de l'appelerréflexion .net objet recherche de l'interface MemberInfo objet
public interface bar {
string Foo;
}
ont également une classe qui implémente l'interface
public fooBar : bar {
public string Foo {get; set;}
}
J'ai alors une propriété accrocher un autre objet qui contient une liste de l'interface "bar" qui contiennent différentes implémentations, comme,
public list<bar> listOfBars;
Maintenant, quand j'utilise un arbre d'expression/fonction comme si
function(parentObj x) { x.listOfBars(0).Foo;}
je peux obtenir le MemberInfo hors de l'arbre d'expression. Le memberinfo pointe cependant vers la méthode d'interface et sa classe est l'interface. Cela fonctionne presque, mais j'ai besoin de savoir ce que sa classe parente est, donc j'aurais besoin de l'objet memberinfo pour trouver et voir son appel d'une méthode hors de l'interface "bar", et le type de classe est "fooBar". Y at-il un moyen de faire cela, j'ai creusé à travers l'objet memberinfo dans la fenêtre de surveillance et ne peux pas accéder au type parent. Je pourrais manquer quelque chose cependant.
Désolé, la plupart du code est en VB, et quand je tapais le C# Je mai n'avait pas la syntaxe tout le chemin à droite . L'interface est configurée comme vous l'avez dit public interface bar {string Foo {get; set;}} Le mot clé IS ne fonctionnera pas non plus car je ne veux pas d'instruction case de toutes mes classes. Lorsque j'attrape le membre de la réflexion comme si propertyMethod = TryCast (expression.Body, System.Linq.Expressions.MemberExpression) Il me parle uniquement de l'interface et de la propriété d'interface vers laquelle l'arbre pointe. Je ne peux pas obtenir le nom de la vraie classe des objets ou rien. – Josh