Ninject使用WCF Web API Preview 5

Cra*_*gly 9 ninject wcf-web-api

任何人都可以指出我正确的方向让Ninject使用WCF Web API Preview 5吗?我已成功启动并运行在我的ASP.NET MVC 3项目中以及使用Ninject.Extensions.Wcf库的另一个内部WCF服务中.但是,在创建新的MVC 3项目并从NuGet获取WebApi.All库时,我无法使其工作.

我已经看过这个stackoverflow post 使用新的WCF Web API设置Ninject但是无法让它工作,我认为可能与最新版本中的一些更改有关.

我也不确定哪个Ninject图书馆可以参考主要图书馆.我是否使用Ninject.MVC3,Ninject.Extensions.Wcf.

任何有关这方面的帮助将非常感激.

****更新**

我正在使用的代码来自上述问题的答案.我在自己的类文件中有这个.

   public class NinjectResourceFactory : IResourceFactory
    {
        private readonly IKernel _kernel;

        public NinjectResourceFactory(IKernel kernel)
        {
            _kernel = kernel;
        }

        public object GetInstance(Type serviceType, InstanceContext instanceContext, HttpRequestMessage request)
        {
            return _kernel.Get(serviceType);
        }

        public void ReleaseInstance(InstanceContext instanceContext, object service)
        {
            // no op
        }
    }
Run Code Online (Sandbox Code Playgroud)

我在global.asax中有这个:

var configuration = HttpConfiguration.Create().SetResourceFactory(new NinjectResourceFactory());
RouteTable.Routes.MapServiceRoute<myResource>("resource", configuration);
Run Code Online (Sandbox Code Playgroud)

我遇到的问题是IResourceFactory接口无法识别,并且HttpConfiguration.Create()不再存在,所以我需要设置SetResourceFactory,我尝试使用HttpConfiguration()创建其他方法.CreateInstance方法但没有喜悦.

小智 9

以下是我使用Ninject和WebApi的代码,它的工作原理.创建一个继承自WebApiConfiguration的类

public class NinjectWebApiConfiguration : WebApiConfiguration {
    private IKernel kernel = new StandardKernel();

    public NinjectWebApiConfiguration() {
        AddBindings();
        CreateInstance = (serviceType, context, request) => kernel.Get(serviceType);
    }

    private void AddBindings() {
        kernel.Bind<IProductRepository>().To<MockProductRepository>();
    }

}
Run Code Online (Sandbox Code Playgroud)

并在RegisterRoutes中使用NinjectWebApiConfiguration

public static void RegisterRoutes(RouteCollection routes) {

    routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

    var config = new NinjectWebApiConfiguration() { 
        EnableTestClient = true
    };

    routes.MapServiceRoute<ContactsApi>("api/contacts", config);
}
Run Code Online (Sandbox Code Playgroud)