文档指出 Autofac 支持开放泛型,我可以在基本情况下注册和解析,如下所示:
登记:
builder.RegisterGeneric(typeof(PassThroughFlattener<>))
.As(typeof(IFlattener<>))
.ContainerScoped();
解决:
var flattener = _container.Resolve<IFlattener<Address>>();
上面的代码工作得很好。但是,假设我直到运行时才知道提供给 IFlatener 的类型,我想做这样的事情:
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
我正在努力实现本文中概述的相同目标。