2010-02-26 2 views
0

Я пытаюсь использовать Autofac и Autofac.Integrations.Web для регистрации контроллеров ASP.NET MVC. В настоящее время я использую сборочное сканирование, чтобы найти контроллеры, но для одного из них нужен специальный параметр, который я бы предпочел передать. Ниже приведены регистрационные данные, которые я пробовал.Настройка регистрации контроллера Autofac

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

Я смог найти регистрацию, которая работала после некоторого возиться и отбрасывать отладчик.

var builder = new ContainerBuilder();    

builder.RegisterControllers(Assembly.GetExecutingAssembly()); 

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

Это работает, потому что Autofac автоматически регистрирует различные контроллеры как скрытые именованные регистрации типа IController.

+0

Рад, что вы нашли это, возможно, мы должны добавить расширение, чтобы упростить этот вид override- я возьму Посмотрите на это. Благодаря! –

+1

Благодарим вас за такой замечательный инструмент. Было совершенно легко встать и бежать. Даже если вы не добавляете это расширение, вероятно, вы можете рассмотреть возможность добавления его на страницу вики-публикации MVC/Web. – smaclell

0

пытаются использовать withParameter если и хотят, чтобы пройти любой объект класса

Например:

builder.RegisterType<ApplicationSettingsRepository>().As<IApplicationSettingsRepository>() 
      .WithParameter(new TypedParameter(typeof(NameValueCollection), ConfigurationManager.AppSettings)) 
Смежные вопросы