我希望(以ELEGANT的方式)使用一些自定义方法属性,这将给我这个:
当我调用这样一个方法foo()时,在某个属性中我将有经过的时间(方法调用持续多长时间)。
我怎样才能在C#中做到这一点?反射?
提前谢谢你。 詹姆斯
答案 0 :(得分:3)
C#不提供开箱即用的功能。你有几个选择:
答案 1 :(得分:2)
StopWatch类出了什么问题?我经常使用它来分析关键代码中的一般时序。如果这还不够,我会切换到ANTS(或dotTrace)。
答案 2 :(得分:1)
Action<Action> elegantBenchmark = (body) =>
{
var startTime = DateTime.Now;
body();
Console.WriteLine(DateTime.Now - startTime);
};
elegantBenchmark(DoWork);
P.S。 PostSharp将按照您的要求完成工作。
答案 3 :(得分:0)
无法在C#中拦截普通的旧方法调用。您必须发布(预)处理您的C#代码(如使用PostSharp)才能真正实现此目的。
或者,您可以编写一个基准测试方法,该方法使用lambda来计算一大块代码,但这显然不是真正的装饰器。