2013-10-03 54 views
1

我看到一些類似的問題,但沒有確切的答案。Autofac:通過掃描獲取註冊

如果我掃描組件:

containerBuilder.RegisterAssemblyTypes(...) 

我可以再調整已註冊這樣一個特定類型的?,即登記:

containerBuilder.RegisterAssemblyTypes(...) 
containerBuilder.GetRegistration<MyType>().WithParameter("param", paramValue); 

有沒有辦法實現的東西這種Autofac?

+0

有多少種類型有特殊參數(1,10,100等)?所有你的特殊類型需要相同的參數('paramValue')還是輔助者不同(所以MyType需要paramValue但MyOtherType需要其他參數值? – nemesv

+0

有幾種需要特殊處理的類型,它們需要不同的參數 –

+0

如果你只有幾種類型,那麼最簡單的解決方案將是手動註冊它們,並使用它們的'RegisterAssemblyTypes'功能... – nemesv

回答

0

您可以使用Except()方法從掃描中排除類型,然後您可以手動註冊特殊類型。更多關於Autofac wiki的信息。

+0

是的,但我必須a)明確地包括有問題的班級,和b)重新登記他們。整個過程是用一些默認值自動掃描程序集,然後調整一些註冊。例如,當他們有簡單的配置原語屬性(基本URL,最大/最小,布爾標誌等)。預計這會變得單調乏味。 –

+0

@AmirAbiri然後,如果您可以通過編程方式定義這些「異常」類型,那麼您可以將此邏輯添加到RegisterAssemblyTypes()構造中,例如where子句。你能提供更多信息嗎? –