-1

我來建立新的「企業解決方案」洋蔥建築:工廠實施的地方在哪裏?

所以我決定,因爲我想盡可能靈活的架構使用「洋蔥建築」。

但我是新來的「依賴解決方案」的關注。

據我所知,我應該把工廠「實施」在這一層,這層有引用所有其他層。

然後,我想知道如何讓新實例IFactory的在「UI層」當FactoryImplementation在DependencyResolution層和UI層沒有提及「DependencyResolution層」


編輯::

謝謝Erik先生

但之後我看到了許多這些鏈接時,我想「註冊」實現自己的「接口」,因爲我不能做這樣的事情在UI項目還是有問題的:

kernel.Bind<ITaxCalculator>() 
     .To<TaxCalculator>() 
     .WithConstructorArgument("rate", .2M); 

因爲UI項目無法訪問TaxCalculator「實施」。

回答

5

我認爲最好的解決方案是使用依賴容器(又名IOC容器)來解決你的引用,比如Castle Windsor或Unity,如果你使用.NET。它們使您能夠配置依賴解析,而無需引用UI層中的實際實現。

編輯:有些鏈接:

+0

+1謝謝,但UI項目沒有參考實施項目 那麼如果我無法在UI項目中實現「實施」,我怎麼能做出「解決」 –

+0

這是DI容器可以爲您解決的問題。例如,您可以在某些DI容器的配置文件(不存在硬引用)中執行此操作。這不會解決你的問題嗎? –

+0

我想是的,如果我可以從「配置」文件訪問外部庫。請告訴我哪個DI容器可以使用,如果可能的話使用示例。 –