I tienen un grupo de instancias de la clase TaskParametes registrados en el recipiente, como:autofac: ¿Cómo resolver la colección de tipos con nombre?
builder.Register(c => [some type instantiation]
)).Named<TaskParameters>("someTask").InstancePerDependency();
builder.Register(c => [some type instantiation]
)).Named<TaskParameters>("someOtherTask").InstancePerDependency();
Estas clases pueden ser registrados en cualquiera de los módulos de la aplicación. Me gustaría obtener la lista de instancias con nombre disponibles para enviarlo al cliente, que debe crear una instancia y ejecutarlo por su nombre.
¿Existe una opción para obtener la lista de los nombres, sin realmente crear instancias de tipos? Actualmente estoy excavando ComponentRegistry of IComponentContext, que obtengo de, var ctx = Container.Resolve<IComponentContext>();
, ¿estoy en la dirección correcta?
El problema con los metadatos es que no puedo consultarlo desde el contenedor (hay 'ResolveNamed' y' ResolveKeyed', pero no resove por metadatos). Tampoco puedo encontrar la extensión "Para", ¿está en algún espacio de nombres especial? (AutoFac versión 2.4.4.705) – ikutsin
Intellisense (¿ReSharper?) Tiene problemas con el método WithMetadata, aún debe compilarse. Si también desea resolver estos manejadores desde el contenedor, por favor publique algunos detalles de ese escenario, su pregunta solo habla de crear instancias delegando a los clientes. Para rápido y sucio, se puede usar Named() y WithMetadata(). ¡Aclamaciones! –