我開始使用屬性,本例中的代碼是使用PostSharp 2.0編寫的。無論如何要從屬性中提取或保存數據嗎?
我想要做的是具有Stopwatch
屬性或調用方法可以訪問經過時間的方法。
我使用C#4.0
樣本屬性代碼目前正在寫這個代碼:
[Serializable]
public class StopwatchAttribute : OnMethodBoundaryAspect
{
public override void OnEntry(MethodExecutionArgs args)
{
// Create new stopwatch
Stopwatch stopwatch = new Stopwatch();
// Begin timing
stopwatch.Start();
args.MethodExecutionTag = stopwatch;
}
public override void OnExit(MethodExecutionArgs args)
{
Stopwatch stopwatch = (Stopwatch)args.MethodExecutionTag;
// Stop timing
stopwatch.Stop();
// Write result
Debug.WriteLine("Time elapsed: {0} ms", stopwatch.Elapsed);
}
}
使用屬性
[Stopwatch]
public string Search(string LineNo)
{
// Search for something
// Is it possible to know how long (from Stopwatch attribute) Search took
}
public void CallSearch
{
string x = Search("xyz");
// Is it possible to know how long (from Stopwatch attribute) Search took
}
我得到的剩餘時間的輸出。
但是,是否有延長這一點,以便我可以發送經過的時間。
理想我想看看多久Search
從CallSearch
了,但是這將是確定的,如果我可以,即使在Search
得到的結果本身,然後以某種方式返回。
作爲解決方法,我目前使用"Hole in the Middle"模式。
謝謝
我一直使用做了類似的事情[團結攔截(http://pnpguidance.net/Post/UnityInterceptionExtensionExampleTransparentProxyPolicyInjectorHandlerAttributeICallHandler.aspx) – 2011-03-17 18:00:07
@Sanjeevakumar我很抱歉,我無法理解你提供的鏈接是如何做什麼,我期待的。你能否提供更多細節。 – 2011-03-20 00:24:06