是否可以使用autofac按名称对组件的注册进行分组?
例如,下面的代码有两个 IDbContextProvider 注册。
而且我希望 WfcService 仅解析 IDbContextProvider 的命名实例(“无代理”)。我想使用类似DependsOnNamed("proxyless")方法来显式设置对一组具有相同名称的命名实例的依赖关系。
我希望整个系统使用 IDbContextProvider 的默认实现,而 IWfcService 的继承者应该使用他们自己的命名实例。
var builder = new ContainerBuilder();
builder.RegisterType<DbContextProvider>().As<IDbContextProvider>().As<IDbContextProvider>();
builder.RegisterType<ProxyLessDbContextProvider>().Named<IDbContextProvider>("proxyless");
builder.RegisterType<Repository>().As<IRepository>();//depends on IDbContextProvider
builder.RegisterType<BusinessService>().As<IBusinessService>();//depends on IRepository
builder.RegisterType<WfcService>().As<IWfcService>().DependsOnNamed("proxyless");//depends on IBusinessService
IContainer container = builder.Build();
var wcf = container.Resolve<IWfcService>(); // should depend on "proxyless" IDbContextProvider