強く型付けされたメソッドの名前をラムダ式として引数や括弧を付けずに渡すことはできますか?私は次のような方法があればパラメータを指定せずに引数として強く型付けされたメソッドを使用する
たとえば、:
MyClassのは、MVC、たとえば、のために責任を負うことになるreturn new MyClass<CalleeClass>(c => c.MethodA); //Note: no()'s or arguments
:
public class CalleeClass
{
public void MethodA(obj param1, obj param2)
{
...
}
}
を私は経由して他の場所でこのメソッドを呼び出すしたいと思いますメソッド名をターゲットとしてルーティングします。ここでの目標は、コントローラメソッドを使用して厳密に型指定されたビューを使用できるようにすることです。使用されない「ダム」パラメータを提供する必要はありません。
現在、メソッド名を使用するために次のようなコードを使用していますが、このスタイルでは依然として偽の引数や括弧を渡す必要があります。
public void MyClass<T>(Expression<Action<T>> action)
{
var methodName = (action.Body as MethodCallExpression).Method.Name;
}
EDIT:混乱のため申し訳ありませんが、私は最初だけで、私はあなたが必要と思ったものを含めることによって、問題を単純化しようとした、そしてそうすることで、いくつかの重要な情報を残しました。ここでの究極の目標は、MyClassにジェネリック型+ラムダ式を受け取り、ラムダ式が強く型付けされたメソッド名をオブジェクトのインスタンス化なしで渡すことができるようにすることです。 -MB
オプションのパラメータを設定できませんか?また、それが括弧を持っていなければMethodCallExpressionは動作しません。私はかなり確信しています。 – chemicalNova
パラメータはダムではありません。それらはコンパイラによって使用されています... –
パラメータには害はありませんが、ルーティングのメソッド名だけが必要です。オブジェクトをインスタンス化しているという印象を与えるのは奇妙です。私はこれが可能であると確信していないので、私はここに来たのです。 :) –