我有一个这样的类,有一些代码可以分析构造函数执行的时间。理想情况下,我希望自动注入此代码,最好是在BaseClass中。这可能是某种方式,所以我不需要将它添加到每个类?
public MyClass : BaseClass
{
public MyClass() : base()
{
using (new ProfileRegion("MyClass"))
{
// Do Stuff
}
}
}
答案 0 :(得分:3)
不要自己添加检测代码 - 使用分析器为您执行此操作。有许多精彩的.NET分析器可供选择(我使用ANTS有很多很好的经验,但还有其他选择。)
答案 1 :(得分:0)
概况分析通常是跨领域的关注点。寻找依赖注入模式。 Martin Fowler's文章是一个好的开始。然后查找像Unity或Spring Framework这样的.NET IoC实现。您需要Factory Pattern到位,所有类的消费者都可以通过该aspect获取实例,并在该工厂中注入性能分析{{3}}。
Spring Framework示例代码
IInvoicingWorkflowProider p = (IInvoicingWorkflowProider)Factory.createInvoicingWorkflowProvider();
ProxyFactory pf = new ProxyFactory(p); //This is Spring's
pf.AddAdvice(new TracingAspect()); //TracingAspect is my aspect implementation
return (IInvoicingWorkflowProider)pf.GetProxy();