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");

 

posted @ 2013-01-14 17:29  rayray2  阅读(270)  评论(0)    收藏  举报