私は機能を持っています:
public void Execute(Expression<Action> expression)
{
var time = expression.Compile().Benchmark();
var msg = string.Format("{0} took {1} to complete",
ReflectionHelper.GetComponentCallDetails().ToString(),
time.ToString(@"hh\:mm\:ss\.ff"));
Logger.Info(msg);
}
呼び出す必要のあるデリゲートは次のようなものです。
channels = GetAllChannelsImpl(maxResults);
私は式ツリーに比較的慣れていないので、アクションデリゲートをメソッドに渡す方法を理解できません。
私はを使用して同じ機能を行うことができました
public void Execute(Action action)
{
var time = action.Benchmark();
var msg = string.Format("{0} took {1} to complete",
ReflectionHelper.GetComponentCallDetails().ToString(),
time.ToString(@"hh\:mm\:ss\.ff"));
Logger.Info(msg);
}
と呼び出す
Execute(() =>
{
channels = GetAllChannelsImpl(maxResults);
});
しかし、リフレクションのオーバーヘッドを使用して、それをログに記録するために呼び出されたメソッドの詳細を把握する必要をなくすために、式ツリーベースのアプローチを使用したかったのです。
上記のアクションデリゲートの式ツリーをメソッドパラメータとして渡す正しい方法を誰かが提案できますか?