次のシグネチャを持つメソッドがあるとします。
public void MyMethod(Func<int> expression)
{
// Does work
}
そして、このメソッドを次のように呼び出します。
int intProperty = 7;
MyMethod(() => intProperty);
ラムダを使用せずにこのメソッドを呼び出す方法はありますか? だから私はそれを次のようにしたい:
MyMethod(intProperty);
メソッドのシグネチャを変更する必要があるかどうかは、私にとっては問題ではありません - 私はそれを頼りにしています。私がこれをやろうとしている理由は、アクセスできるようにする必要がある関数として渡されたときに、初期プロパティに関する追加情報を調べることができるからです。
元のパラメーターに関する情報が必要なため、MyMethod 内で Reflection を使用してもここで機能するとは思いません。それらは、関数から名前などの情報を取得する方法であり、これを取得できるようにしたいと考えています。私はすでにこれを行うことができます。したがって、上記の例では、MyMethod は、渡されたプロパティの名前が intProperty であると判断できます。
注: これは単純化された例です。それが私が望んでいたすべてである場合、私は私がプロパティを渡すことができることをよく知っています。しかし、元の名前など、Func がここでキャプチャしている元のプロパティに関する追加情報が必要です。