1
在Visual Studio 2017中創建新的ASP.NET Core項目後,我們得到2個控制器:AccountController
和ManageController
。兩個控制器都通過構造函數使用依賴注入來獲得ApplicationSignInManager
和ApplicationUserManager
。缺省項目依賴性處置不一致性
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
?
有趣的問題。我能夠複製。我的教育猜測是兩個不同的開發人員。更有趣的是,ApplicationSignInManager依賴於ApplicationUserManager,所以如果有的話,這會使其處於不一致的狀態(假設它是相同的對象)。無論哪種方式。我不喜歡這種處理方法,因爲我認爲對象的範圍/生命週期應該由掌握實例化知識的人來控制,在這種情況下,IoC容器(上面提到的相互依賴性就是其中的原因)。 – JuanR