複数のコントローラ間でいくつかのオブジェクトを共有しようとしています。これを行う最善の方法は何ですか。私はシングルトンを避けたいと思いますが、可能ならばこれらを注入したいのですが、asp.net mvcを使うとコントローラを "新しくしていない"ので、どんな助けもありがたいです。asp.net mvc - コントローラがオブジェクトを共有する最良の方法は何ですか?
1
A
答えて
2
私がMVCを使い始めたとき、同じ問題がありました。それから、IoC(Inversion of Control)コンテナと依存性注入について学びました。これらのことがどれくらいのことを可能にするかは非常に驚きです。
このプロジェクトは、Castle Windsor、NHibernate、およびASP.NET MVCを1つのパッケージに統合しています。 http://code.google.com/p/sharp-architecture/
自分でやりたいことは、好きなIoCコンテナを選ぶことです。そこにいくつかのバインディングがMVCのためにある、またはあなた自身をロールバックすることができます。独自の方法を使用する場合は、IControllerFactory
を実装し、工場を使用するようにMVCを設定する必要があります。ここは私のものです。
public class ControllerFactory : IControllerFactory
{
private readonly IDependencyResolver _controllerResolver;
private RequestContext RequestContext { get; set; }
public ControllerFactory(IDependencyResolver controllerResolver)
{
_controllerResolver = controllerResolver;
}
public void ReleaseController(IController controller)
{
_controllerResolver.Release(controller);
var disposableController = controller as IDisposable;
if (disposableController != null)
disposableController.Dispose();
}
public IController CreateController(RequestContext requestContext, string controllerName)
{
Assert.IsNotNull(requestContext, "requestContext");
Assert.IsNotNullOrEmpty(controllerName, "controllerName");
RequestContext = requestContext;
try
{
var controllerInstance = _controllerResolver.Resolve<IController>(controllerName.ToLower() + "controller");
return controllerInstance;
}
catch(Exception ex)
{
throw new HttpException(404, ex.Message, ex);
}
}
}
関連する問題
- 1. リポジトリをASP.NETコントローラに挿入する最も良い方法は何ですか
- 2. クラス間でオブジェクトを共有する良い方法は何ですか?
- 3. MVCでコントローラを呼び出す最も良い方法は何ですか?
- 4. ASP.Net MVCにオブジェクトのリストを保存する最良の方法
- 5. Excelマクロを共有/配布する最も良い方法は何ですか?
- 6. コントローラからビューを生成する最良の方法は何ですか?
- 7. トークンの共有を防ぐ最良の方法は何ですか?
- 8. 共有レイアウトビューにASP.NET MVCのコントローラがありますか?
- 9. MVCリポジトリをテストする最良の方法は何ですか?
- 10. Asp.Net MVCで自動取引を行う最良の方法は何ですか?
- 11. コンテナ間でオブジェクトを共有する最適な方法は何ですか?
- 12. 3台のPCの間でASP.NET MVC Azureプロジェクトを共有する最も良い方法は?
- 13. Asp.Net MVCからAppsを共有するのは良いですか?
- 14. オブジェクトを共有する最も安全な方法は何ですか?PHP
- 15. 大きなASP.net MVCアプリケーションでコントローラを共有/拡張する
- 16. JUnitでコントローラとサービスをテストする最良の方法は何ですか?
- 17. "コントローラ"クラスをロード/選択する最良の方法は何ですか
- 18. AzureとAndroidアプリを共有する最良の方法
- 19. 複数のコントローラ間で$ scopeオブジェクトを共有する方法
- 20. デフォルトのMVCコントローラを共有
- 21. ASP.Netセッションを有効にする最良の方法
- 22. iPhoneアプリケーション内でリソースを共有する最良の方法
- 23. Eclipseでマルチモジュールプロジェクトを共有するときにSubversiveを利用する最良の方法は何ですか?
- 24. ASP.NET MVC:コントローラのHttpContextにアクセスするのは良いですか?
- 25. asp.net mvc:ドメイン間でイメージファイルを共有する方法
- 26. コントローラの共有方法
- 27. asp.net mvcでのリソース共有
- 28. (MVC)共有ライブラリのコントローラ?
- 29. 共通のタスククロージャを作成する最良の方法は何ですか
- 30. NodeJS:サーバーレンダリングビューとReactアプリケーションの間でセッションを共有する最良の方法は何ですか
何を共有しようとしていますか?一般的なデータはビューに送信されますか? – Martin
共通サービス。 。 – leora