13
servicios registrados Dadas las implementaciones:de autofac <T> para resolver el nombre del servicio
builder.RegisterType<Foo1>().Named<IFoo>("one").As<IFoo>();
builder.RegisterType<Foo2>().Named<IFoo>("two").As<IFoo>();
builder.RegisterType<Foo3>().Named<IFoo>("three").As<IFoo>();
¿Puedo recuperar el nombre de la interfaz IFoo
inyectando algo así como Func<string, IFoo>
?
public class SomeClass(Func<string, IFoo> foo) {
var f = foo("one");
Debug.Assert(f is Foo1);
var g = foo("two");
Debug.Assert(g is Foo2);
var h = foo("three");
Debug.Assert(h is Foo3);
}
sé que puedo hacerlo con Meta<>
, pero no quiero usarlo.
Gran idea! Gracias :). – ppiotrowicz
Edición secundaria: el parámetro 'c' es temporal; necesita resolver IComponentContext si desea mantenerlo así. c => {var cc = c.Resolve(); return named => cc.Resolve (named); } –
@Nicholas: ah, por supuesto, esto es demasiado fácil de ignorar :) –