【问题标题】:How to disable warning that occurred by overriding in Ranorex (c#)如何禁用通过在 Ranorex (c#) 中覆盖而发生的警告
【发布时间】:2020-05-18 17:16:52
【问题描述】:

我尝试在 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(字符串, 布尔)'。如果打算隐藏,请使用 new 关键字。 (CS0108) - C:\*****\\Ranorex\RanorexStudio 项目\*****\DropListActions.cs:117,18

例如在java 中所有由@Override 注释标记的覆盖方法。也许在c# 中存在适当的方法来做到这一点?如何跳过那些警告消息?

【问题讨论】:

  • 在 C# 中,默认情况下一切都是非虚拟的,这与 Java 不同。

标签: c# overriding ranorex


【解决方案1】:

基类和派生类都有同名的方法(SimpleSelectByInnerText)。编译器告诉您派生类中的方法正在“隐藏”基类中的方法(您没有覆盖它,因为只能覆盖 virtualabstract 方法)。

要消除此警告,您可以使用 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 的 What’s the difference between override and new?Compiler Warning (level 2) CS0108 了解更多信息。

【讨论】:

    猜你喜欢
    • 2010-09-12
    • 2017-09-30
    • 1970-01-01
    • 1970-01-01
    • 2015-11-13
    • 1970-01-01
    • 2014-05-08
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多