在下面的示例中,Resharper抱怨DoA()
方法永远不会被使用,尽管由' AImplementator'类:
namespace Test
{
public interface A
{
// Method 'DoA' is never used
void DoA();
}
public class AImplementator: A
{
public void DoA()
{
throw new System.NotImplementedException();
}
}
}
由于正在使用接口IS,我无法理解这种行为。
Obs:我可以使用评论或[UsedImplicitly]
属性来抑制警告。但鉴于这种情况,这些选择似乎都不正确。我使用的是Resharper 9.1。
答案 0 :(得分:2)
回答其他人来这里。
如果你有resharper 10.
你可以使用jetrains annotatoins:
将属性:[UsedImplicitly]
放在上面就足够了。
值得注意的是,它也可以将它放在基类上。
在这种情况下,将它放在接口A上将修复显示所有子类的消息(非常适合ioc实现)
namespace Test
{
[JetBrains.Annotations.UsedImplicitly]
public interface A
{
// Method 'DoA' is never used
void DoA();
}
public class AImplementator: A
{
public void DoA()
{
throw new System.NotImplementedException();
}
}
}
答案 1 :(得分:1)
此警告仅在Solution-Wide Analysis is enabled。
时显示警告是关于接口方法的用法(在这种情况下,例如呼叫)。以下示例应演示它(请注意var
与接口作为局部变量类型。)
var instance = new AImplementator();
// Does NOT make A.DoA() "used":
instance.DoA();
A instanceAsInterface = new AImplementator();
// DOES make A.DoA() "used":
instanceAsInterface.DoA();