假设我有一个具有以下签名的方法:
public void MyMethod(Func<int> expression)
{
// Does work
}
我称这个方法如下:
int intProperty = 7;
MyMethod(() => intProperty);
他们是不是我可以在不使用 lambda 的情况下调用此方法?所以我希望它看起来像这样:
MyMethod(intProperty);
方法签名是否必须更改对我来说并不重要——我有点指望它。我尝试这样做的原因是,当初始属性作为我需要能够访问的函数传入时,您可以检查有关初始属性的其他信息。
我不相信在 MyMethod 中使用反射在这里会起作用,因为我想要有关原始参数的信息。它们是从函数中获取信息的方法,例如它的名称,这是我希望能够检索的。我已经能够做到这一点。因此,在上面的示例中,MyMethod 将能够判断传入的属性名称为 intProperty。
注意:这是一个简化的示例。我很清楚,如果这就是我想要的,我可以直接通过房产。但我想要有关 Func 在此处捕获的原始属性的其他信息,例如其原始名称。