2017-08-14 3 views
1

Visual Studio 2017で新しいASP.NETコアプロジェクトを作成した後、AccountControllerManageControllerの2つのコントローラを取得します。どちらのコントローラーもコンストラクター経由で依存関係注入を使用してApplicationSignInManagerApplicationUserManagerを取得します。既定のプロジェクトの依存関係の不一致の解消

AccountControllerさんDispose

protected override void Dispose(bool disposing) 
{ 
    if (disposing) 
    { 
     if (_userManager != null) 
     { 
      _userManager.Dispose(); 
      _userManager = null; 
     } 

     if (_signInManager != null) 
     { 
      _signInManager.Dispose(); 
      _signInManager = null; 
     } 
    } 

    base.Dispose(disposing); 
} 

ManageControllerさんDispose

protected override void Dispose(bool disposing) 
{ 
    if (disposing && _userManager != null) 
    { 
     _userManager.Dispose(); 
     _userManager = null; 
    } 

    base.Dispose(disposing); 
} 

なぜマネージャではありませんManageController処分サイン? AccountControllerと異なるのはなぜですか?ファンのコメントに基づいて

+1

興味深い質問です。私は複製することができました。興味深いのは、 'ApplicationSignInManager'は' ApplicationUserManager'に依存しているので、何かがあれば、これは(それが同じオブジェクトであると仮定すると)不整合な状態になります。どちらにしても。オブジェクトのスコープ/ライフタイムはインスタンス化の知識がある人、この場合はIoCコンテナ(上記の相互依存性が理由である)によって制御されるべきだと私は考えています。 – JuanR

答えて

0

それがさえ完全にDisposeメソッドを削除するには大丈夫ですので、IoCコンテナは、すべての依存関係を処分しなければならないので、しかし、それは問題ではありません、見落としのように見えます。

関連する問題