我在一個項目中使用了結構圖和Asp .Net MVC。目前我正在MVC層中註冊我的依賴關係解決方案(服務,數據等)。但是,我想知道如何才能做到這一點,只需註冊MVC層下的什麼,即服務層。基本上我的控制器有服務注入到他們,這就是我想要我的UI層知道。在服務類中,我注入了庫,並希望那些在那裏註冊的結構圖......等等。換句話說,我希望每個圖層都只依賴(儘可能)直接位於其下面的圖層。 謝謝!structuremap asp .net mvc註冊
1
A
回答
1
我不確定我明白你在問什麼。
您必須註冊所有將要解析的對象。然後在您的控制器中,您只需要將ISomeService傳遞給構造函數。例如,控制器不知道ISomeService已經注入了IRepositories。
1
一個好方法是將結構圖約定與結構圖註冊表結合使用。這將處理您的大部分註冊問題。結構圖可以掃描你的bin,並映射它在bin中所有dll中找到的依賴關係。
查找到的掃描方法用StructureMap登記類組合:
Scan(x =>
{
x.AssembliesFromApplicationBaseDirectory(y =>
y.FullName.StartsWith("JustLookAtTheseDlls"));
// Use default conventions
x.WithDefaultConventions().OnAddedPluginTypes(y =>
y.HybridHttpOrThreadLocalScoped());
//Are there any registries? If so, register them
x.LookForRegistries();
}
註冊表看起來像這一點,你能把一個到每個項目的每個註冊的項目:
public class IocRegistry :
StructureMap.Configuration.DSL.Registry
{
public IocRegistry()
{
For<IDocumentStore>().Singleton()
.Use<RavenStore>();
}
}
您的根應用程序應具有包含上述掃描語句的註冊表。然後初始化structuremap像這樣:
ObjectFactory.Configure(x => x.AddRegistry(
new MyTopLevelRegistry()));
凡MyTopLevelRegistry看起來是這樣的:
public class MyTopLevelRegistry: Registry
{
public MyTopLevelRegistry()
{
Scan(x =>
{
x.AssembliesFromApplicationBaseDirectory(
y => y.FullName
.StartsWith("InsertYourNamespacePrefix"));
x.WithDefaultConventions().OnAddedPluginTypes(
y => y.HybridHttpOrThreadLocalScoped());
x.LookForRegistries();
});
}
}
請記住,如果你將其設置爲「WithDefaultConventions」它會自動映射到IMyClass這樣MYCLASS你甚至不必須在註冊表中指定這些內容。您只需註冊不符合該慣例的項目。
希望這會有所幫助!
2
我建議在自己的庫中使用composition root。
在我正在研究的項目中,我們將StructureMap註冊表放入一個名爲xx.yy.IoC的庫中,我們從Global.asax調用配置代碼。
MVC圖層只有一個指向IoC庫的鏈接。 IoC庫依賴於其他層(域,數據等)
作爲提示:本文改變了我們對分層的看法。 jeffrey palermo onion architecture
相關問題
- 1. Asp .net MVC3用戶註冊
- 2. StructureMap和ASP .Net Web API和.Net Framework 4.5
- 3. 錯誤註冊asp MVC
- 4. .NET MVC與StructureMap依賴注入
- 5. ASP Net核心StructureMap HybridLifecycle替換
- 6. StructureMap 2.5註冊表語法
- 7. StructureMap - 註冊泛型類型
- 8. 在StructureMap中註冊單元
- 9. ASP .NET MVC VirtualPathProvider
- 10. ASP .Net MVC 2013
- 11. 在ASP .NET MVC
- 12. ASP .NET MVC ActionLink
- 13. VBScript註冊[ASP] MSSQL]
- 14. .NET MVC 4註冊後自動登錄
- 15. StructureMap和.Net核心
- 16. 如何註冊具體類基於structuremap
- 17. StructureMap:如何註冊System.Type實現
- 18. SetAllProperties方法structuremap丟失的註冊表
- 19. StructureMap自動註冊後代類
- 20. StructureMap AddAllTypesOf未註冊情況下
- 21. ASP MVC 3基本註冊/登錄/註銷在不同的表
- 22. Javascript onload MVC ASP .NET MVC
- 23. ASP .net MVC - Master page
- 24. asp .net mvc授權
- 25. OpenStreeMaps與ASP MVC .NET
- 26. SSL和ASP .NET MVC
- 27. ASP NET MVC 5 SessionState
- 28. ASP .NET MVC報告
- 29. ASP .NET MVC層DAL
- 30. asp .net mvc 4 dropdownlist