La documentazione afferma che Autofac supporta farmaci generici aperti e sono in grado di registrare e risolvere in un caso base in questo modo:Autofac con Open Generics e tipo specificato in fase di esecuzione
Registrazione:
builder.RegisterGeneric(typeof(PassThroughFlattener<>))
.As(typeof(IFlattener<>))
.ContainerScoped();
Resolve:
var flattener = _container.Resolve<IFlattener<Address>>();
Il codice sopra funziona perfettamente. Tuttavia, supponendo che non voglio conoscere il tipo fornite IFlattener fino al runtime, voglio fare qualcosa di simile:
object input = new Address();
var flattener = (IFlattener)_container.Resolve(typeof(IFlattener<>), new TypedParameter(typeof(IFlattener<>), input.GetType()));
Questo è possibile con autofac? Ho avuto l'idea da quanto segue usando StructureMap:
http://structuremap.sourceforge.net/Generics.htm
Sto cercando di raggiungere lo stesso obiettivo descritto in questo articolo.
Grazie per la risposta rapida, che funziona! –