我有一堆在容器中註冊,就像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