很多我的C#代碼通用日誌記錄遵循以下模式:的異常功能參數處理
void foo(string param1, string param2, string param3)
{
try
{
// do something...
}
catch(Exception ex)
{
LogError(String.Format("Error in foo(param1={0}, param2={1}, param3={2}), exception={3}", param1, param2, param3, ex.Message));
}
}
是否有.NET的方式來獲取參數的鍵/值列表的功能,使我可以調用另一個函數來構造我的錯誤日誌字符串? 或 你有更通用/更好的方式來做到這一點嗎?
可能與語言中的Reflection有關嗎? – nlucaroni 2008-09-25 20:27:09
你可以通過反射來實現,但在許多函數調用過程中它會變得很昂貴。 – 2008-09-25 20:28:48
我不認爲你可以用Reflection或StackTrace/StackFrame來做到這一點。我認爲你唯一的選擇可能是使用AOP或後處理框架,如PostSharp。 – 2008-09-25 20:29:16