我正在通过resharper的代码检查进行一些代码分析,我得到了下一个警告:
仅使用属性'propertyname'的实现
这个警告我在我的界面上,如果我谷歌我发现这个jetbrains页面: http://confluence.jetbrains.com/display/ReSharper/Only+implementations+of+property+are+used
这根本没有帮助我,因为那时我再也没有界面......
所以我开始测试如何摆脱那个警告。 在下面的虚拟接口和类:
public interface ITest
{
string Name { get; set; }
}
public class Test: ITest
{
public string Name { get; set; }
}
如果我使用:
var newTest = new Test();
newTest.Name= "newName";
然后发出警告。但是当我使用下一行时,警告将消失。
ITest newTest = new Test();
newTest.Name = "newName";
我不是Ninja的界面,所以我想知道,两种方式有什么区别......?
谢谢!
答案 0 :(得分:3)
这推断出具体类型:
//X is of type X
var x = new X();
这不是
//X is of type IX
IX x = new X();
我猜你写这个警告仍会发出
//X is of type X
X x = new X();
以下是否会删除警告?
public void TestX()
{
//X is of type X
var x = new X();
UseIX(x);
}
public void UseIX(IX interfaceParam)
{
interfaceParam.Foo = 1;
}
答案 1 :(得分:2)
var newTest = new Test()将newTest的类型设置为Test。 ITest newTest = new Test()会将newTest的类型设置为ITest。
因此,以前的ITest不需要,因为它从未使用过。
所以resharper只是说你不需要ITest。你是否同意这取决于你。你需要ITest吗?