如何避免'方法从未使用过'信息?

时间:2015-06-05 19:00:09

标签: c# visual-studio-2013 resharper static-analysis resharper-9.1

在下面的示例中,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,我无法理解这种行为。

  1. 为什么会这样?
  2. 如何修复此警告?
  3. Obs:我可以使用评论或[UsedImplicitly]属性来抑制警告。但鉴于这种情况,这些选择似乎都不正确。我使用的是Resharper 9.1。

2 个答案:

答案 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();