2017-08-29 38 views
1

我有以下代碼:構造DI - 現場永遠不會分配給,永遠有它的默認值

public void ConfigureServices(IServiceCollection services) { 
    services.AddMemoryCache(); 
} 

private IMemoryCache _cache; 

public HomeController(IMemoryCache memoryCache) : base() {  
    this._cache = memoryCache;  
} 

ASP.Net Core經處理IMemoryCache實例的注入它正在標記_cache字段:

Field HomeController._cache is never assigned to, and will always have its default value null

它不是causi如果有任何錯誤,只是在編輯器中分散注意力。

要說服Visual Studio 2017,我實際上是通過構造函數爲這個字段賦值,那麼有什麼辦法呢?

代碼(因爲錯誤重疊的話):

enter image description here

隨着顯示錯誤的編輯器:

enter image description here

在運行時顯示的有效實例被注入:

enter image description here

編輯:

對於建議使用意見:

private IMemoryCache _cache = null; 

...這沒有什麼區別,同樣確切的結果。

+0

好的,您正在使用IMemoryCache參數調用HomeController構造函數。 – mybirthname

+0

如果聲明爲'private IMemoryCache _cache = null',則可以分配空值,這應該刪除警告 –

+0

@mybirthname .Net Core會自動處理它。我已經驗證了正在調用構造函數,該參數有一個有效的非空實例,並且使用this._cache的MVC操作方法中的緩存代碼也按預期工作。 – Patrick

回答

1

重新啓動Visual Studio 2017並重新啓動不能解決問題。

但是,我被通知了Visual Studio 2017更新版本15.3.3當我重新加載環境時,我安裝了。

重新啓動Visual Studio後更新後,此情況不再發生。

我懷疑更新實際上是否做了與此問題相關的任何事情,這很可能是我的VS配置中的某些內容已關閉,並且更新使其恢復原狀。

相關問題