我尝试在Ranorex中使用重写(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,bool)”。如果有意隐藏,请使用新关键字。(CS0108) -C:\*\Ranorex\RanorexStudio Projects\****\DropListActions.cs:117,18
例如,在java中,由@Override注释标记的所有重写方法。也许在c#中有一种合适的方法来做到这一点?如何跳过这些警告消息?
发布于 2020-02-02 22:01:33
基类和派生类都有一个名称相同的方法(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和编译器警告(级别2) CS0108的编译器警告(级别2) CS0108。
https://stackoverflow.com/questions/60030942
复制相似问题