2012-04-03 50 views
1

我正在使用Ninject和MVC3一起注入我的控制器依赖项。有时甚至在执行控制器操作之前,我在MVC Mini Profiler中得到的定时很慢。由于在此之前我没有做太多的工作,我认为这可能是我使用Ninject时遇到的一个问题。有没有一种方法可以从ninject获取一些时间信息?也许是一个配置选项来记录依赖性解决需要多长时间,或者如果不是,我自己可以添加一个类是否可以扩展或包装?在mvc3 web应用程序中配置文件ninject

回答

3

您可以通过实现IDependencyResolver接口并将其替换到DependencyResolver上来编写NinjectDependencyResolver的装饰器。

DependencyResolver.SetResolver(new ProfilingResolver(DependencyResolver.Current)); 

public class ProfilingResolver : IDependencyResolver 
{ 
    private readonly IDependencyResolver decoratedResolver; 

    public ProfilingResolver(IDependencyResolver decoratedResolver) 
    { 
     this.decoratedResolver = decoratedResolver; 
    } 

    public object GetService(Type serviceType) 
    { 
     using (MiniProfiler.Current.Step("Get_" + serviceType.Name)) 
     { 
      return this.decoratedResolver.GetService(serviceType); 
     } 
    } 

    public IEnumerable<object> GetServices(Type serviceType) 
    { 
     using (MiniProfiler.Current.Step("GetAll_" + serviceType.Name)) 
     { 
      return this.decoratedResolver.GetServices(serviceType); 
     } 
    } 
} 
+0

+1 Doh!尼斯... – 2012-04-04 07:52:12

+0

为了将来的参考,它确实不是ninject! – olle 2012-04-05 18:01:39

1

首先,我的默认的答案是: -

我从来没有见过DI显示为的配置文件中的任何有趣统计学显著比例。 Go Compose

(这篇文章以评论开始: - @olle你看过源代码吗?有一些相对简单的扩展可以“解决”解决过程,不应该太复杂。使用Mini Profiler并且很容易插入东西,这似乎是一个相对直接的扩展,我知道这是PITA在论坛上的回应,但我个人非常感激被告知要使用几年前的源代码 - Ninject代码库和它的测试是真正的快乐阅读。)

+1

不,我明确地意识到答案。我偷看了源,我也想检查是否已经有一个现有的包装/功能等......我可能错过了。 – olle 2012-04-04 10:49:48

+1

@olle酷。很高兴有一个圣雷莫给予真正的答案,但:D – 2012-04-04 10:52:32

相关问题