asp.net-mvc-3 - 当我在 IOC (ninject) 上更改这行代码时,MVC 如何更改要使用的 Controller 构造函数?

标签 asp.net-mvc-3 controller ninject

我已经在 global.asax 文件中的项目中设置了 ninject...

protected void Application_Start()
        {
            RegisterDependencyResolver();
            AreaRegistration.RegisterAllAreas();

            RegisterGlobalFilters(GlobalFilters.Filters);
            RegisterRoutes(RouteTable.Routes);
        }

        private void RegisterDependencyResolver()
        {
            var kernel = new StandardKernel();
            kernel.Bind<PteDotNetCore.IBlogManager>().To<PteDotNetCore.BlogManager>();
            DependencyResolver.SetResolver(new PteDotNet.Resolution.PteDotNetDependencyResolver(kernel));
        }

我有一个带有 2 个构造函数的 Controller ......

public CodeController()
        {

        }

        public CodeController(IBlogManager injectedManager)
        {
            manager = injectedManager;
        }

当我删除该行时:

kernel.Bind<PteDotNetCore.IBlogManager>().To<PteDotNetCore.BlogManager>();

从代码的第一 block 开始,添加该行时将使用我的默认构造函数,然后使用采用接口(interface)的构造函数。

请有人告诉我 MVC 做出了什么决定来选择构造函数?不太清楚。

最佳答案

这个决定实际上是由ninject做出的。对于构造函数注入(inject),它会选择参数最多的一个,请参阅 wiki 了解其工作原理的详细信息

https://github.com/ninject/ninject/wiki/Injection-Patterns/1e462388cee1887a4bb90067cf334d91604f7ea8

关于asp.net-mvc-3 - 当我在 IOC (ninject) 上更改这行代码时,MVC 如何更改要使用的 Controller 构造函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8952831/

相关文章:

asp.net-mvc-3 - ASP.NET MVC 语言更改链接

c# - 从自定义模型绑定(bind)器调用默认模型绑定(bind)器?

javascript - $scope.$watch 在选项卡内不起作用

dependency-injection - 如何将 AutoMApper.5.2.0 与 Ninject 一起使用?

c# - 使用 Ninject 在具有多个具有相同基本类型的存储库的类中分配正确的存储库

jquery - asp.net mvc jquery ui datepicker绑定(bind)问题

asp.net-mvc-3 - 使用来自服务器的默认数据初始化 View 模型

java - 我应该在哪里放置需要访问数据库的验证代码?

java - 返回类型 ResponseEntity<?> 和 ResponseEntity<Object> 和 ResponseEntity<MyCustomClass> 有什么区别

c# - 使用 Ninject IOC 替换一个工厂