构造函数DI - Field永远不会分配给,并且始终具有其默认值

时间:2017-08-29 21:53:23

标签: c# asp.net-mvc asp.net-core

我有以下代码:

private IMemoryCache _cache;

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

ASP.Net Core通过以下方式处理IMemoryCache实例的注入:

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

标记_cache字段:

  

字段HomeController._cache永远不会分配给,并且永远都会分配   其默认值为null

它没有造成任何错误,只是在编辑器中分散了注意力。

通过构造函数向Visual Studio 2017说服我实际上为此字段赋值是一种方法是什么?

代码(因为错误与其重叠):

enter image description here

编辑器显示错误:

enter image description here

在运行时显示正在注入的有效实例:

enter image description here

修改

对于建议使用的评论:

private IMemoryCache _cache = null;

......这没有区别,同样的确切结果。

3 个答案:

答案 0 :(得分:1)

重新启动Visual Studio 2017并重新启动无法解决问题。

但是,当我重新加载环境时,我收到了Visual Studio 2017更新版本 15.3.3 的通知。

重新启动Visual Studio更新后,不再出现这种情况。

我怀疑更新实际上做了与此问题相关的任何事情,更可能是我的VS配置中的某些内容已关闭且更新将事情重新放回原位。

答案 1 :(得分:0)

清洁您的解决方案应该可以解决此问题。在VS2017菜单中:Project -> Clean Solution

答案 2 :(得分:0)

我在VS2015上遇到过同样的情况。就我而言,Build -> Rebuild Solution解决了该问题。