C # - не удается найти использование метода при наследовании и использовании через интерфейс, реализованный подклассом - PullRequest
6 голосов
/ 31 октября 2011

Я использую VisualStudio 2008 и 2010, оба с ReSharper, и когда я пытаюсь найти использование данного метода, я не получаю результатов, несмотря на то, что метод наследуется и затем вызывается через интерфейс. В чем дело? Это ошибка VS / ReSharper? Смотрите пример ниже:

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();
       }
   }
}

Спасибо, Фабрицио

Ответы [ 3 ]

1 голос
/ 01 ноября 2011

Это известная проблема: http://youtrack.jetbrains.net/issue/RSRP-46273 без текущей целевой версии исправления

1 голос
/ 31 октября 2011

Возможно, потому что ваш SuperClass не реализует интерфейс.Это может вызвать проблемы для ReSharper.Попробуйте:

   class SuperClass : MyInterface
   {
       public void Hello()
       {
           Console.WriteLine("Hi!");
       }
   }
0 голосов
/ 31 октября 2011

Это все связано с порядком, в котором SubClass наследует метод Hello() от SuperClass и MyInterface.

Я удивлен, что вы не получите предупреждение о том, чтоSubClass.Hello() (от реализации определения интерфейса) скроет SuperClass.Hello().

...