Tag: ninject.web.mvc

如何使用Ninject Conventions Extension进行绑定?

我喜欢使用Ninject自动绑定绑定波纹管代码。 是否可以在单个项目中同时使用手动和自动绑定? 让我们采取波纹管手动绑定,我希望通过自动绑定实现。 请告诉我如何实现这一目标。 kernel.Bind().ToSelf().InRequestScope(); kernel.Bind<IUnitOfWork>().To<UnitOfWork>(); Bellow所有接口都inheritance自基础接口: IRepository 3。 kernel.Bind().To(); 4。 kernel.Bind().To(); 5。 kernel.Bind().To().WithConstructorArgument(“apikey”, AppSettingsManager.GetSmsApiKey) 额外 我是否需要为多个类编写.Exclude()如果我需要这样做的话 .Exclude() .Exclude() .Exclude() ? 并且对于1和2是否需要单独的手动绑定? 或者1可以使用BindToSelf()’ and .Configure(b => b.InRequestScope())`完成?

如何解决错误:该类型似乎没有实现microsoft.practices.servicelocation.iservicelocator?

我是MVC的新手,我正在关注Adam Freeman的 “ PRO ASP.NET MVC 4 ”。 我目前正在编写第6章。 我正在学习如何在MVC 4中使用Ninject进行dependency injection。 我按照书中的描述创建了应用程序。 现在我无法得到以下错误的原因: 该类型似乎没有实现microsoft.practices.servicelocation.iservicelocator 这是我的控制器代码: public class HomeController : Controller { private Product[] products = { new Product {Name = “Kayak”, Category = “Watersports”, Price = 275M}, new Product {Name = “Lifejacket”, Category = “Watersports”, Price = 48.95M}, new Product {Name = “Soccer ball”, […]

无法使用Ninject将依赖项注入到从Angular Service调用的ASP.NET Web API控制器中

我正在使用Ninject和ASP.NET MVC 4.我正在使用存储库并希望进行构造函数注入以将存储库传递给其中一个控制器。 这是我的上下文对象(EntityFramework),它实现了我的StatTracker接口: public class StatTrackerRepository : IStatTrackerRepository { private GolfStatTrackerEntities _ctx; public StatTrackerRepository(GolfStatTrackerEntities ctx) { _ctx = ctx; } public IQueryable GetFacilites() { return _ctx.Facilities; } } 这是我的Repository界面: public interface IStatTrackerRepository { IQueryable GetFacilites(); } 然后调用我的家庭控制器: public class HomeController : Controller { public IStatTrackerRepository _repo { get; set; } public HomeController(IStatTrackerRepository repo) { […]

将依赖项注入DelegatingHandler

我是dependency injection的新手,但对Ninject和Ninject.Extensions.Logging感到很满意,只要我需要它就可以[Inject]我的ILogger 。 然而,一些DelegatingHandler正在破坏所有的乐趣。 public class HttpsHandler : DelegatingHandler { [Inject] public ILogger Logger { get; set; } protected override Task SendAsync( HttpRequestMessage request, CancellationToken cancellationToken) { if (!string.Equals(request.RequestUri.Scheme, “https”, StringComparison.OrdinalIgnoreCase)) { Logger.Info(String.Format(“{0}: is using HTTP”, request.RemoteAddress()); return Task.Factory.StartNew( () => new HttpResponseMessage(HttpStatusCode.BadRequest) { Content = new StringContent(“HTTPS Required”) }); } return base.SendAsync(request, cancellationToken); } […]

使用Ninject的参数化工厂

如何使Ninject在运行时基于变量实例化对象? 我试图在控制器动作中注入正确的存储库 – MVC 3 – 基于来自用户输入的参数。 如果用户输入“BMW”,它会将ICarRepository绑定到BMWRepository ,如果输入“KIA”,则会注入KiaRepository 。 [HttpPost] public ActionResult SearchResult(FormCollection values) { string carModel = values[“model”]; ICarRepository myRepository = RepositoryFactory.getRepository(carModel); ….. } 这是通过switch / case noob instantiation或Parameterized Factories已知的,我知道如何在没有Ninject的情况下手动完成,请查看此处介绍的4种方法探索工厂模式 我的问题是如何用Ninject做到这一点?

Ninject:实体对象不能被IEntityChangeTracker的多个实例引用

我开始在我的MVC5代码优先应用程序中使用Ninject。 这是我的NinjectWebCommon.cs: private static IKernel CreateKernel() { var kernel = new StandardKernel(); try { kernel.Bind<Func>().ToMethod(ctx => () => new Bootstrapper().Kernel); kernel.Bind().To(); kernel.Bind() .ToSelf() //.InSingletonScope(); .InRequestScope(); kernel.Bind() .To(); kernel.Bind() .To(); kernel.Bind() .To(); kernel.Bind() .To(); kernel.Bind() .To(); RegisterServices(kernel); return kernel; } catch { kernel.Dispose(); throw; } } 我试过.InSingletonScope()以及.InRequestScope()但我仍然得到’ 实体对象不能被多个IEntityChangeTracker实例引用 ‘错误。 这是我的界面: public interface IExecutiveRepository : IDisposable { […]

如何配置Ninject以便它为每个Controller创建一个实例

我正在尝试将Ninject用于MVC5应用程序,我想知道是否有任何方法可以配置它以便为每个Controller实例化一个对象(我不确定它是否与每个请求相同),使用该实例在控制器的任何Action中,一旦Action完成,就释放对象使用的所有资源。 我希望Ninject在我的控制器中注入的类实现了IDisposable接口。 到目前为止,我试过这个: private static void RegisterServices(IKernel kernel) { kernel.Bind().To(); } 但Dispose方法永远不会被调用。 我也试过InRequestScope ,但它也InRequestScope 。 到目前为止,唯一真正有用的是在EVERY Controller的Action中的using语句中包装我需要的对象的实例化。 像这样的东西: using (var uow = UnitOfWorkFactory.Create()) { var repos = new UserRepository(uow); uow.SaveChanges(); } 编辑: 由Ninject包添加的NinjectWebCommon类 public static class NinjectWebCommon { private static readonly Bootstrapper bootstrapper = new Bootstrapper(); /// /// Starts the application /// public static void […]

NinjectDependencyResolver无法绑定ModelValidatorProvider

我正在使用C#,.NET Framework 4.5.1开发ASP.NET Web Api 2.2。 更新我的Web.Api到Ninject 3.2.0后,我收到此错误: Error activating ModelValidatorProvider using binding from ModelValidatorProvider to NinjectDefaultModelValidatorProvider A cyclical dependency was detected between the constructors of two services. Activation path: 3) Injection of dependency ModelValidatorProvider into parameter defaultModelValidatorProviders of constructor of type DefaultModelValidatorProviders 2) Injection of dependency DefaultModelValidatorProviders into parameter defaultModelValidatorProviders of constructor of type […]