我測試了一些類似的方法調用性能,我在一些時間和日誌記錄語句正在包裝。我通過Action delegate參數傳遞這些方法。我怎樣才能得到一個Action委託調用的名稱/細節?
有沒有辦法打印有關通話的細節?
例如:
var httpResult = TestService(() => serviceHttp.Search(criteria));
var tcpResult = TestService(() => serviceTcp.Search(criteria));
var localResult = TestService(() => servicelocal.Search(criteria));
...
private static double TestService(Action serviceOperation)
{
const int iterations = 15;
...
for (var i = 0; i < iterations; i++)
{
var watch = Stopwatch.StartNew();
...
Console.WriteLine(string.Format("{0} ElapsedMilliseconds={1}", ????, watch.ElapsedMilliseconds));
// Ideally this would print something like "serviceTcp.DoStuff(...) ElapsedMilliseconds=313"
}
...
}
,你可以拉出來一些信息。請參閱:http://stackoverflow.com/questions/671968/retrieving-property-name-from-lambda-expression –
嗯..你需要改變serviceOperation的類型。將Action(委託)轉換爲Expression樹是不可能的。 – Strillo
顯然你至少要在這裏使用'Action'委託,現在調用者提供上下文很簡單。 –