1

MVC で Unity IoC をセットアップする方法のサンプルを見ていて、Func のパラメーターを持つアプローチを推奨している人に気付きました。利点は、サービスの遅延読み込みのようなものであり、呼び出されない場合は実行されず、リソースを消費しないことだと思います。

 private readonly Func<IUserService> _userService;

 public CourseController(Func<IUserService> userService)
 {
         this._userService = userService;
 }

Func のないパラメータとの比較:

 private readonly IUserService _userService;

 public CourseController(IUserService userService)
 {
         this._userService = userService;
 }

誰かが私に違いを説明できますか、それは本当に効率的ですか?

4

1 に答える 1

1

依存関係の型としてFunc<IUserService>の代わりに使用する理由の 1 つは、循環的な依存関係を回避することです。IUserService

私が答えたNHibernate ISessionのCastle Windsor IoCとの循環依存関係に関するSOの質問があり、のFunc<ISession>代わりにのを使用することを提案しましたISession

循環的な依存関係がない場合は、単純な型を使用することを好みます。

依存関係Func<IUserService>IUserService.

于 2013-11-01T21:28:08.327 に答える