В документации говорится, что Autofac поддерживает открытые дженерики, и я могу зарегистрироваться и разрешить в базовом случае, например:
Регистрация:
builder.RegisterGeneric(typeof(PassThroughFlattener<>))
.As(typeof(IFlattener<>))
.ContainerScoped();
Resolve:
var flattener = _container.Resolve<IFlattener<Address>>();
Приведенный выше код работает просто отлично. Однако, предполагая, что я не буду знать тип, предоставленный IFlattener до времени выполнения, я хочу сделать что-то вроде этого:
object input = new Address();
var flattener = (IFlattener)_container.Resolve(typeof(IFlattener<>), new TypedParameter(typeof(IFlattener<>), input.GetType()));
Возможно ли это с AutoFac? Я получил идею из следующего использования StructureMap:
http://structuremap.sourceforge.net/Generics.htm
Я пытаюсь достичь той же цели, о которой говорится в этой статье.