c# -当继承并通过子类实现的接口使用方法时,找不到方法的用法

本文关键字:使用方法 接口 找不到 用法 方法 实现 继承 子类 | 更新日期: 2023-09-27 18:12:47

我正在使用VisualStudio 2008和2010,都与ReSharper,当我试图查找给定方法的用法时,我没有得到结果,尽管该方法被继承,然后通过接口调用。怎么了?这是VS/ReSharper的bug吗?请看下面的例子:

using System;
namespace UsageNotFound
{
   interface MyInterface
   {
       void Hello();
   }
   class SuperClass
   {
       public void Hello() //NOTE: VS 2008/2010 (with resharper)
seems unable to find usages on this!!!
       {
           Console.WriteLine("Hi!");
       }
   }
   class SubClass : SuperClass, MyInterface
   {
       public static MyInterface GetInstance()
       {
           return new SubClass();
       }
   }
   class Program
   {
       static void Main(string[] args)
       {
           SubClass.GetInstance().Hello();
       }
   }
}

谢谢,法布里奇奥

c# -当继承并通过子类实现的接口使用方法时,找不到方法的用法

这是一个已知的问题:http://youtrack.jetbrains.net/issue/RSRP-46273没有当前的目标修复版本

可能是因为您的SuperClass没有实现接口。这可能会导致ReSharper出现问题。试一试:

   class SuperClass : MyInterface
   {
       public void Hello()
       {
           Console.WriteLine("Hi!");
       }
   }

这一切都与SubClassSuperClassMyInterface继承Hello()方法的顺序有关。

我很惊讶,你没有得到一个警告,SubClass.Hello()(从实现接口定义)将隐藏SuperClass.Hello()