【问题标题】:Constructor parameters for controllers without a DI container for ASP.NET MVC用于 ASP.NET MVC 的没有 DI 容器的控制器的构造函数参数
【发布时间】:2010-09-12 10:40:00
【问题描述】:

除了使用依赖注入容器之外,有没有人有关于如何创建具有参数的控制器的代码示例?

我看到很多使用 StructureMap 等容器的示例,但如果您想自己传递依赖类,则没有。

【问题讨论】:

    标签: c# .net asp.net-mvc


    【解决方案1】:

    一种方法是创建一个ControllerFactory:

    public class MyControllerFactory : DefaultControllerFactory
    {
        public override IController CreateController(
            RequestContext requestContext, string controllerName)
        {
            return [construct your controller here] ;
        }
    }
    

    然后,在 Global.asax.cs 中:

        private void Application_Start(object sender, EventArgs e)
        {
            RegisterRoutes(RouteTable.Routes);
            ControllerBuilder.Current.SetControllerFactory(
                new MyNamespace.MyControllerFactory());
        }
    

    【讨论】:

      【解决方案2】:

      你可以使用穷人的依赖注入:

      public ProductController() : this( new Foo() )
      {
        //the framework calls this
      }
      
      public ProductController(IFoo foo)
      {
        _foo = foo;
      }
      

      【讨论】:

        【解决方案3】:

        您可以创建一个 IModelBinder,它从工厂启动实例 - 或者,是的,容器。 =)

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-05-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-11-15
          • 1970-01-01
          相关资源
          最近更新 更多