代码之家  ›  专栏  ›  技术社区  ›  smaclell

自定义自动空调控制器注册

  •  0
  • smaclell  · 技术社区  · 16 年前

    我正在尝试使用autopac和autopac.integrations.web注册ASP.NET MVC控制器。我目前正在使用程序集扫描来查找控制器,但其中一个需要一个特殊的参数,我宁愿将其传入。以下是我尝试的注册信息。

    var builder = new ContainerBuilder();
    
    builder.RegisterControllers(Assembly.GetExecutingAssembly());
    
    // so far I have tried
    builder.Register<SpecialController>(c =>
       new SpecialController(wierdParam, c.Resolve<IDependency>())
    ).Named<SpecialController>("controller.special")
    .As<SpecialController>().As<IController>();            
    
    /* And this
    builder.Register<SpecialController>(c => 
        new SpecialController(url, c.Resolve<IDependency>())
    );            
    */
    
    /* plus this
    builder.Register<SpecialController>(c =>
       new SpecialController(url, c.Resolve<IDependency>())
    ).Named<SpecialController>("controller.special");            
    */
    

    谢谢你的帮助。

    2 回复  |  直到 12 年前
        1
  •  2
  •   Joshua Keel smaclell    12 年前

    我找到了一个注册,它在对调试程序进行了一些修改和弄脏之后起作用。

    var builder = new ContainerBuilder();            
    
    builder.RegisterControllers(Assembly.GetExecutingAssembly());
    
    builder.Register<IController>(c =>
        new SpecialController(weirdParam, c.Resolve<IDependency>())
    ).Named<IController>("controller.special");
    

    这是因为autopac自动将不同的控制器注册为该类型的隐藏命名注册 IController .

        2
  •  0
  •   Girish    13 年前

    如果要传递任何类对象,请尝试使用WithParameter

    例如:

    builder.RegisterType<ApplicationSettingsRepository>().As<IApplicationSettingsRepository>()
                .WithParameter(new TypedParameter(typeof(NameValueCollection), ConfigurationManager.AppSettings))