7
là có thể đưa các phụ thuộc vào lớp WebApiConfig bằng Ninject không?Tiêm phụ thuộc Ninject vào WebApiConfig trong Web API 2
Đây là lớp WebApiConfig của tôi.
public static class WebApiConfig
{
public static void Register(HttpConfiguration config)
{
// Web API routes
config.MapHttpAttributeRoutes();
config.Routes.MapHttpRoute(
name: "DefaultApi",
routeTemplate: "api/{controller}/{id}",
defaults: new { id = RouteParameter.Optional }
);
config.Services.Replace(typeof(IExceptionHandler), new ErrorHandlerMessageHandler(*NEEDS DEPENDENCY*));
}
}
Và đây là lời tuyên bố NinjectHttpApplication tôi
public class WebApiApplication : NinjectHttpApplication
{
protected override void OnApplicationStarted()
{
base.OnApplicationStarted();
GlobalConfiguration.Configure(WebApiConfig.Register);
}
protected override IKernel CreateKernel()
{
var kernel = new StandardKernel();
RegisterServices(kernel);
GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver(kernel);
return kernel;
}
private void RegisterServices(IKernel kernel)
{
//bindings
}
}
nhờ bài này đã giúp tôi, nhưng tôi nghĩ một số người đã có lớp NinjectWebCommon này nếu họ đang thêm WebAPI vào một dự án MVC hiện có. Tôi thấy rằng dòng sau đây là tất cả những gì tôi cần để bổ sung: 'GlobalConfiguration.Configuration.DependencyResolver = new NinjectDependencyResolver (_kernel);' sau lệnh 'RegisterServices (_kernel)' trong phương thức 'CreateKernel'. Lưu ý rằng đây là 'NinjectDependencyResolver' từ không gian tên' Ninject.Web.WebApi' (có thể phải tải xuống gói NuGet riêng biệt). Cảm ơn! – Jordan
Tôi vẫn đang cố gắng tìm ra cách để làm điều này. Lớp NinjectWebCommon của tôi đã chứa dòng đó, tuy nhiên ngay cả tôi cũng có một thuộc tính được trang trí với thuộc tính [Tiêm], sự phụ thuộc không được tiêm. Có suy nghĩ gì không? –
Bạn đã chuyển blog của mình chưa? Có vẻ như nó không còn nữa. –