2013-10-03 55 views
1

我看到一些类似的问题,但没有确切的答案。Autofac:通过扫描获取注册

如果我扫描组件:

containerBuilder.RegisterAssemblyTypes(...) 

我可以再调整已注册这样一个特定类型的?,即登记:

containerBuilder.RegisterAssemblyTypes(...) 
containerBuilder.GetRegistration<MyType>().WithParameter("param", paramValue); 

有没有办法实现的东西这种Autofac?

+0

有多少种类型有特殊参数(1,10,100等)?所有你的特殊类型需要相同的参数('paramValue')还是辅助者不同(所以MyType需要paramValue但MyOtherType需要其他参数值? – nemesv

+0

有几种需要特殊处理的类型,它们需要不同的参数 –

+0

如果你只有几种类型,那么最简单的解决方案将是手动注册它们,并使用它们的'RegisterAssemblyTypes'功能... – nemesv

回答

0

您可以使用Except()方法从扫描中排除类型,然后您可以手动注册特殊类型。更多关于Autofac wiki的信息。

+0

是的,但我必须a)明确地包括有问题的班级,和b)重新登记他们。整个过程是用一些默认值自动扫描程序集,然后调整一些注册。例如,当他们有简单的配置原语属性(基本URL,最大/最小,布尔标志等)。预计这会变得单调乏味。 –

+0

@AmirAbiri然后,如果您可以通过编程方式定义这些“异常”类型,那么您可以将此逻辑添加到RegisterAssemblyTypes()构造中,例如where子句。你能提供更多信息吗? –