我有一堆在容器中注册,就像TaskParametes类实例:autofac:如何解析命名类型的集合?
builder.Register(c => [some type instantiation]
)).Named<TaskParameters>("someTask").InstancePerDependency();
builder.Register(c => [some type instantiation]
)).Named<TaskParameters>("someOtherTask").InstancePerDependency();
这些类可以在应用程序的任何模块中进行注册。我想获取可用命名实例的列表以将其发送给客户端,客户端应该实例化并按名称执行它。
是否有一个选项来获取名称列表,而不实际实例化类型? 目前我正在挖掘ComponentRegistry的IComponentContext,我从中获得,var ctx = Container.Resolve<IComponentContext>();
,我在正确的方向吗?
元数据的问题是我无法从容器中查询它(有'ResolveNamed'和'ResolveKeyed',但没有元数据resove)。 我也无法找到“For”扩展名,它是否在一些特殊的命名空间? (AutoFac版本2.4.4.705) – ikutsin 2011-04-26 07:31:33
Intellisense(ReSharper?)在WithMetadata方法中遇到问题 - 它仍然应该编译。如果您还想从容器中解析这些处理程序,请发布该场景的一些详细信息,但您的问题仅涉及通过委派给客户端来创建实例。对于快速和肮脏,可以使用Named()以及WithMetadata()。干杯! – 2011-04-26 21:58:28