2

テンプレートの AccountController クラス (VS 2013 Update 2) には、次のコードが含まれています。

public class AccountController : Controller
{
    private ApplicationUserManager _userManager;

    public AccountController()
    {
    }

    public AccountController(ApplicationUserManager userManager)
    {
        UserManager = userManager;
    }

    public ApplicationUserManager UserManager {
        get
        {
            return _userManager ?? HttpContext.GetOwinContext().GetUserManager<ApplicationUserManager>();
        }
        private set
        {
            _userManager = value;
        }
    }

ここでApplicationUserManagerは、保存された ApplicationUserManager オブジェクト (2 番目のコンストラクターが呼び出された場合) を返すか、パラメーターなしのコンストラクターが呼び出された場合に Owin パイプラインからフェッチされた ApplicationUserManager を返す気の利いたヘルパー プロパティがあります。

質問: ApplicationUserManager オブジェクトを渡すコンストラクターを呼び出すものはありますか?

4

1 に答える 1

2

デフォルトではありません。ただし、DI フレームワークの使用を開始する場合は、DI フレームワークをセットアップして、コントローラーに任意のコンストラクター (この場合はApplicationUserManager ) を挿入できます。

デフォルトは、MVC コントローラーが機能するには空のコンストラクターが必要ですが、DI フレームワークを使用する場合は、任意のタイプのコンストラクターを挿入するように構成できます。コンストラクター注入を使用する利点は、すべての依存オブジェクトをモックできることです。

DI フレームワークを使用する場合は、AutoFac をお勧めします ( https://code.google.com/p/autofac/wiki/MvcIntegration )。

于 2014-05-28T07:58:52.210 に答える