Autofac register name
http://stackoverflow.com/questions/2888621/autofacs-funct-to-resolve-named-service
// BATE1
var builer = new ContainerBuilder();
builder.RegisiterType<interClassA>().As<IClass>().Named<IClass>("interClassA");
builder.RegisiterType<interClassB>().As<IClass>().Named<IClass>("interClassB");
IContainer container = builer.Buide();
var p1 = container.ResolveN.Named<IClass>("interClassA");
var p2 = container.ResolveN.Named<IClass>("interClassB");
// BATE2
var builer = new ContainerBuilder();
builder.RegisterAssemblyTypes(Assmebly.GetExecting.Assmebly())
.Where(t=>t.name.startwith("interClass")
.AsImplementedInterfaces()
.Named(o=>o.name,typeof(IClass));
IContainer container = builer.Buide();
var p1 = container.ResolveN.Named<IClass>("interClassA");
var p2 = container.ResolveN.Named<IClass>("interClassB");
// BATE3
var builer = new ContainerBuilder();
builder.RegisiterType<interClassA>().As<IClass>().Named<IClass>("interClassA");
builder.RegisiterType<interClassB>().As<IClass>().Named<IClass>("interClassB");
builder.Regisiter<Func<string,IClass>>({
c => {
var cc = c.Resolve<ICompoentContext>();
return name=> cc.ResolveNamed<IClass>(named);
}
});
IContainer container = builer.Buide();
var p = container.Resolve<Func<string,IClass>>();
var p1 =p("interClassA");
浙公网安备 33010602011771号