私は、プロジェクト内で構造マップとAsp .Net MVCを使用しています。現時点では、MVCレイヤーの下にあるすべてのもの(サービス、データなど)の依存関係の解決方法を登録しています。しかし、MVCレイヤのすぐ下にあるもの、つまりサービスレイヤを登録するだけで、これをどうやって行うことができるのだろうかと思っていました。基本的に私のコントローラにはサービスが注入されています。それは私のUIレイヤに知って欲しいことです。サービスクラスの中で私はリポジトリを注入し、そこにstructuremapで登録されたリポジトリを必要とします。言い換えれば、各レイヤーはそのレイヤーのすぐ下のレイヤーにのみ(できるだけ)依存させたいと思っています。 ありがとう!構造マップasp .net mvc登録
答えて
あなたが何を求めているのか分かりません。
解決されるすべてのオブジェクトを登録する必要があります。その後、あなたのコントローラでは、ISomeServiceがコンストラクタに渡されると考えています。コントローラは、例えばISomeServiceがIRepositoriesを注入したことを知らない。
良いアプローチは、構造マップの慣習と構造マップのレジストリを組み合わせて使用することです。それはあなたの登録問題の大部分を担当します。 Structuremapはあなたのビンをスキャンし、あなたのビン内のすべてのdllにある依存関係をマップすることができます。
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();
}
レジストリはこのような何かを見て、あなただけの各項目を登録するには、プロジェクトのそれぞれに1をドロップすることができます:
のStructureMapレジストリクラスと組み合わせScanメソッドへルック
public class IocRegistry :
StructureMap.Configuration.DSL.Registry
{
public IocRegistry()
{
For<IDocumentStore>().Singleton()
.Use<RavenStore>();
}
}
ルートアプリケーションには、上記のスキャンステートメントを含むレジストリが必要です。
MyTopLevelRegistryはこのようになりますObjectFactory.Configure(x => x.AddRegistry(
new MyTopLevelRegistry()));
:あなたがいなくてもやるので、「WithDefaultConventions」は、それが自動的にMyClassのにIMyClassをマップするためにそれを設定している場合に注意してください
public class MyTopLevelRegistry: Registry
{
public MyTopLevelRegistry()
{
Scan(x =>
{
x.AssembliesFromApplicationBaseDirectory(
y => y.FullName
.StartsWith("InsertYourNamespacePrefix"));
x.WithDefaultConventions().OnAddedPluginTypes(
y => y.HybridHttpOrThreadLocalScoped());
x.LookForRegistries();
});
}
}
そして、そのようのStructureMapを初期化しますレジストリにそのようなものを指定する必要があります。その慣習に従わない品目を登録するだけです。
希望すると便利です。
composition rootの使用をお勧めします。
プロジェクトでは、StructureMapレジストリをxx.yy.IoCという名前のライブラリに配置し、Global.asaxから構成コードを呼び出します。
MVCレイヤには、IoCライブラリへのリンクのみがあります。 IoCライブラリは他のレイヤ(ドメイン、データなど)との依存関係を持っています
ヒント:この記事ではレイヤリングについての見解が変更されました。 jeffrey palermo onion architecture
- 1. 構造マップInstanceScope.Hybrid asp.net mvc misbehaves
- 2. CakePHP登録ページの構造化
- 3. .NET MVCプロジェクトの構造
- 4. 構造マップ
- 5. ASP .net MVC - マスターページ
- 6. ASP .NET MVC
- 7. asp .net mvc authorization
- 8. .NETアセンブリの登録
- 9. ASP MVC 3基本的なテーブルの登録/ログイン/ログアウト
- 10. Javascript onload MVC ASP .NET MVC
- 11. Asp Net Core RC1 MVC
- 12. OpenStreeMaps with ASP MVC .NET
- 13. ASP .NET MVC + Submit + JSON
- 14. ASP .NET MVC - Javascriptの
- 15. オープンソース.Net Web登録フォームジェネレータ
- 16. regsvcs登録.NETクラスとDLLHOST
- 17. MVC PHPデザイン登録フォーム
- 18. 構造マップ4プロパティインジェクション
- 19. EXTJS4 MVC構造
- 20. エリクシルでマップ/構造体をログに記録する方法
- 21. ユニタリーコンテナ - Idataprotectorの登録
- 22. OAuth2.0を読むSigned_Request Facebook登録C#MVC
- 23. ASP .NET MVC - コントローラの数
- 24. Asp net mvc 4剣道ドロップダウンリスト
- 25. ASP .NET MVC 3 +ビューフォルダ+ ASPX ViewPage
- 26. JQuery After Body ASP .NET MVC 4
- 27. ASP .Net MVC、チェックボックスの問題!
- 28. TinyMCE Spellchecker in ASP .NET MVC
- 29. ASP .NET MVC動的列名?
- 30. エラー404 with ASP .net MVC 2