Si je classe simpleComment analyser simple capture l'expression de fermeture et obtenir l'objet cible et sélecteur
class Foo {
int Value { get; set; } = 20
}
class Bar {
Foo foo { get; set;} = new Foo();
}
puis j'écris une expression de sélection
var bar = new Bar();
Expression<Func<int>> fn =() => bar.foo.Value;
Je sais que si je de type
var v = fn.Compile()()
v sera égale à démontrant que la fermeture est en effet capturée. Je déduis que dans l'expression une référence à la cible capturée de l'expression est stockée. J'aimerais que cela sorte de l'expression.
Par exemple
Bar capturedBar = GetTarget(fn);
Assert(capturedBar == bar);
et une autre fonction
string selector = GetSelector(fn)
qui doit retourner
"bar.foo.A"