在以下示例中,Resharper抱怨尽管已由“ AImplementator”类实现了DoA()方法,但从未使用过:

namespace Test
{
    public interface A
    {
        // Method 'DoA' is never used
        void DoA();
    }

    public class AImplementator: A
    {
        public void DoA()
        {
            throw new System.NotImplementedException();
        }
    }
}


由于使用了接口,因此我无法理解此行为。


为什么会这样?
如何解决此警告?


观察员:我可以使用注释或[UsedImplicitly]属性禁止警告。但是考虑到这种情况,这些选项似乎都不正确。我正在使用Resharper 9.1。

最佳答案

该警告仅在Solution-Wide Analysis is enabled时显示。

该警告是关于接口方法的用法(在这种情况下,例如是调用)。下面的示例应对此进行演示(注意var vs.接口是局部变量类型)。

var instance = new AImplementator();
// Does NOT make A.DoA() "used":
instance.DoA();

A instanceAsInterface = new AImplementator();
// DOES make A.DoA() "used":
instanceAsInterface.DoA();

关于c# - 如何避免出现“从不使用方法”消息?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30673904/

10-11 15:16