Как отключить предупреждение о переопределении в Ranorex (c#) - PullRequest
1 голос
/ 03 февраля 2020

Я пытаюсь использовать переопределение в Ranorex Studio (c# использование языка)

public class DropListActions
{
     public void SimpleSelectByInnerText(string text, bool close){
     }
}
public class CheckBoxDropListWithInputField : DropListActions
{
     //overriding
     public void SimpleSelectByInnerText(string text, bool close){
     }
}

все работает хорошо, но в отчете отображаются предупреждения:

'** **************. CheckBoxDropListWithInputField.SimpleSelectByInnerText (string, bool) 'скрывает унаследованный член' ****************. DropListActions.SimpleSelectByInnerText (string , бул) Используйте новое ключевое слово, если скрытие было предназначено. (CS0108) - C: \ ***** \\ Ranorex \ RanorexStudio Projects \ ***** \ DropListActions.cs: 117,18

Например, в java все переопределение методов, помеченных @Override аннотацией. Может быть, в c# существует подходящий способ сделать это? Как пропустить эти предупреждения?

1 Ответ

1 голос
/ 03 февраля 2020

И базовый класс, и производный класс имеют метод с одинаковым именем (SimpleSelectByInnerText). Компилятор говорит вам, что метод в производном классе «скрывает» метод в базовом классе (вы не переопределяете его, потому что только методы virtual или abstract могут быть переопределены).

Чтобы избавиться от этого предупреждения, вы можете использовать ключевое слово new, которое сообщает компилятору, что вы намереваетесь «скрыть» базовый метод:

public class CheckBoxDropListWithInputField : DropListActions
{
     public new void SimpleSelectByInnerText(string text, bool close)
     {   //  ^ new keyword here before the return type   
     }
}

В качестве альтернативы, вы можете использовать override и пометьте метод в базовом классе как virtual:

public class DropListActions
{
     public virtual void SimpleSelectByInnerText(string text, bool close)
     {
     }
}

public class CheckBoxDropListWithInputField : DropListActions
{
     public override void SimpleSelectByInnerText(string text, bool close)
     {
     }
}

См. В чем разница между переопределением и новым? от Jon Skeet и Предупреждение компилятора (уровень 2) CS0108 для получения дополнительной информации.

...