我正在将代码从Autofac 1.4升级到2.1.10 Release Candidate.
我的模块之前执行了如下注册:
builder.RegisterCollection<IExceptionHandler>()
.As<IEnumerable<IExceptionHandler>>()
.FactoryScoped();
builder.Register<AspNetExceptionHandler>()
.As<IExceptionHandler>()
.MemberOf<IEnumerable<IExceptionHandler>>()
.FactoryScoped();
Run Code Online (Sandbox Code Playgroud)
现在,RegisterCollection没有无参数过载.我不在乎给它命名.假设可以传入null,我的代码在2.1中看起来像这样:
builder.RegisterCollection<IExceptionHandler>(null)
.As<IEnumerable<IExceptionHandler>>()
.InstancePerDependency();
builder.RegisterType<AspNetExceptionHandler>()
.As<IExceptionHandler>()
.MemberOf<IEnumerable<IExceptionHandler>>(null)
.InstancePerDependency();
Run Code Online (Sandbox Code Playgroud)
但是,当我编译时,我得到以下错误.MemberOf:
使用泛型方法'Autofac.RegistrationExtensions.MemberOf(Autofac.Builder.RegistrationBuilder,string)'需要'3'类型参数
我尝试输入集合名称而不是null,以防万一,这没有效果.
在2.1中注册集合的正确方法是什么?
据我了解,您只需注册一堆IExceptionHandler类型,然后当您请求IEnumerable<IExceptionHandler>Autofac 2 时,您只需为您处理一切.
从NewInV2页面:
builder.RegisterType<A1>().As<IA>();
builder.RegisterType<A2>().As<IA>();
var container = builder.Build();
// Contains an instance of both A1 and A2
Assert.AreEqual(2, container.Resolve<IEnumerable<IA>>().Count());
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1119 次 |
| 最近记录: |