0

我正在通过 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";

我不是界面忍者,所以我想知道,这两种方式有什么区别..?

谢谢!

4

2 回答 2

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;
}
于 2013-03-28T12:26:11.007 回答
2

var newTest = new Test() 将 newTest 的类型设置为 Test。ITest newTest = new Test() 将 newTest 的类型设置为 ITest。

因此,不需要以前的 ITest,因为它从未使用过。

所以 resharper 只是说你不需要 ITest。是否同意,由你决定。您需要 ITest 吗?

于 2013-03-28T12:25:34.617 回答