如何使用ninject注入对WebAPI自定义处理程序的依赖

时间:2018-07-29 18:02:30

标签: c# asp.net-web-api ninject

我的c#WebAPI项目具有以下处理程序。

public class CustomLogHandler : DelegatingHandler
    {
        [Inject]
        public ILogRepository LogRepository { get; set; }

        ... some methods here   
     }

此处理程序已在我的WebApiConfig.cs类中注册。

public static class WebApiConfig
    {
        public static void Register(HttpConfiguration config)
        {
            // Web API configuration and services

            // Web API routes
            config.MapHttpAttributeRoutes();

            ... some code here

            config.MessageHandlers.Add(new CustomLogHandler());
        }
}

我的ILogRepository也作为我的其他存储库注册在了NinjectWebCommon.cs类中。

 kernel.Bind(typeof(ILogRepository)).To(typeof(Data.LogRepository));
  

问题是,当我调试并且断点到达我的CustomLogHandler方法时,LogRepository实例为空。

有任何线索吗?

1 个答案:

答案 0 :(得分:0)

我找到了一种行之有效的方法:

var service = GlobalConfiguration.Configuration.DependencyResolver.GetService(typeof(ILogRepository)) as ILogRepository;

希望这对其他人有用。

谢谢