我有一个服务接口的具体类实现,如下所示:
public class MyService:IService {
public MyService([KeyFilter("sampleone")] IRepository repoToUse) {
_repoToUse = repoToUse;
}
// rest of code
}
我正在将服务注册为:
builder.Register(ctx => new CustomRepo()).Keyed<IRepository>("sampleone");
builder.RegisterType<MyService>().AsSelf().WithAttributeFiltering();
在我的控制器中,我使用生命周期范围来解析服务。
public class MyTestController:ApiController{
public MyTestController(ILifteTimeScope scope) {
var testone = scope.Resolve(typeof(IService));
var testtwo = scope.Resolve(typeof(MyService));
}
}
所以我正在解析这些服务,我能够正确解析“testone”但是当应用程序试图解析“testtwo”时,它会抛出一个错误:Autofac.Core.DependencyResolutionException。它基本上表明我无法解析IRepository。
为什么会这样?
答案 0 :(得分:0)
我嘲笑这是有效的。
我在进程中稍后将该类型注册为self()但没有属性过滤,因此它覆盖了之前的注册。
e.g。
// later on in the execution path.
builder.RegisterType<MyService>().As<IServiceTwo>.AsSelf();