dan*_*die 0 c# resharper warnings lazy-loading
平台:带有Resharper 4.1,.NET 3.5的Visual Studio 2008 SP1
我有一个静态方法的类,GetProperty<T>
它懒惰地返回一个属性值.
private static T GetProperty<T>(T backingField, Func<T> factory)
where T : class
{
if (backingField == null)
backingField = factory();
return backingField;
}
Run Code Online (Sandbox Code Playgroud)
但是,当我使用上述方法返回属性时,我收到两条警告,指出未分配私有支持字段.但是只有在需要时才会分配它们.
这个警告是否可以忽略?
- 或者 -
我的加载财产是否存在缺陷?
Ada*_*son 13
你的方法有缺陷.要采用这种方法,您需要创建backingField
一个ref
参数.
private static T GetProperty<T>(ref T backingField, Func<T> factory)
Run Code Online (Sandbox Code Playgroud)
然后GetProperty
,通过ref _ImagXpress
或ref _PdfXpress
.
你现在这样做只是为参数赋予一个新值,而不是为实际的后备字段赋值.
你的方法有缺陷.你的字段永远不会被设置为任何东西.该backingField
参数是在GetProperty<T>
方法中设置的,但是这不会更新您传入的字段.您将要传递带有ref
附加关键字的参数,如下所示:
private static T GetProperty<T>(ref T backingField, Func<T> factory)
Run Code Online (Sandbox Code Playgroud)