2017-08-29 190 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配置中的某些内容已关闭,并且更新使其恢复原状。