Я пытаюсь внедрить внедрение зависимостей в web api 2, но не могу этого сделать. Ошибка получения ссылки на объект.
Вот мой инструмент
Модель:
public class Product
{
.....
}
Интерфейс:
public interface IProductRepository
{
IEnumerable<Product> GetAll();
.....
}
Реализация интерфейса:
public class ProductRespository : IProductRepository, IDisposable
{
private ApiContext _context;
public ProductRespository(ApiContext context)
{
this._context = context;
}
public ProductRespository()
{
}
public IEnumerable<Product> GetAll()
{
return _context.Products.OrderBy(o => o.Name);
}
......
}
И Ninjectwebcommon.cs класс:
public static class NinjectWebCommon
{
private static readonly Bootstrapper bootstrapper = new Bootstrapper();
public static void Start(){....}
.....
private static IKernel CreateKernel()
{
var kernel = new StandardKernel();
kernel.Bind<Func<IKernel>>().ToMethod(ctx => () => new Bootstrapper().Kernel);
kernel.Bind<IHttpModule>().To<HttpApplicationInitializationHttpModule>();
System.Web.Http.GlobalConfiguration.Configuration.DependencyResolver = new Ninject.WebApi.DependencyResolver.NinjectDependencyResolver(kernel);
RegisterServices(kernel);
return kernel;
}
private static void RegisterServices(IKernel kernel)
{
//kernel.Bind<IRepo>().ToMethod(ctx => new Repo("Ninject Rocks!"));
kernel.Bind<ApiContext>().ToSelf().InRequestScope();
kernel.Bind<IProductRepository>().To<ProductRespository>().InRequestScope();
}
}
И, наконец, в моем контроллере ProductController:
public class ProductController : ApiController
{
private IProductRepository _productRepository = null;
public ProductController(IProductRepository productRepository)
{
_productRepository = productRepository;
}
public ProductController()
{
}
public IHttpActionResult GetAllProducts()
{
return Ok(_productRepository.GetAll());
}
}
Когда включается метод контроллера getallproducts, я получаю это исключение
System.NullReferenceException: 'Ссылка на объект не установлена для экземпляра объекта.'