繁体   English   中英

C#不实现继承的抽象成员

[英]C# does not implement inherited abstract member

我已经对这个问题进行了很多搜索。 有很多方法可以解释,但它们对我而言并不可用。

我有这个课:

public class ArcHydro : Oatc.OpenMI.Sdk.Backbone.LinkableComponent
{
   public void Initialize(Argument[] properties)
        {
            _timeStamps = new ArrayList();
            _culture = CultureInfo.CurrentCulture.NumberFormat;
            _links = new Hashtable();
            readArcHydro();
        }
}

哪个继承这个类

namespace Oatc.OpenMI.Sdk.Backbone
{
    public abstract void Initialize(IArgument[] properties);
}

错误是

`'CUAHSI.OpenMI.ArcHydro' does not implement inherited abstract member 
'Oatc.OpenMI.Sdk.Backbone.LinkableComponent.Initialize(OpenMI.Standard.IArgument`[])'`

我该如何解决? 我在上课之前使用了重写,但错误仍然存​​在。

你有两个问题。 您应该实现:

public abstract void Initialize(IArgument[] properties);

但是您正在实现:

public void Initialize(Argument[] properties);
// --------------------^ Notice the missing 'I'.

其次,您缺少override关键字。 因此,您的课程应如下所示:

public class ArcHydro : Oatc.OpenMI.Sdk.Backbone.LinkableComponent
{
    public override void Initialize(IArgument[] properties)
    {
        _timeStamps = new ArrayList();
        _culture = CultureInfo.CurrentCulture.NumberFormat;
        _links = new Hashtable();
        readArcHydro();
    }
}

您的实现函数应具有“ override”关键字和相同的参数。

public override void Initialize(IArgument[] properties)
{
   //...
} 

实现的方法的签名应与抽象方法完全相同。 因此,您应该像这样:

public override void Initialize(IArgument[] properties)
{
...
}

请注意,您的输入参数应来自抽象类中提到的IArgument []类型,请记住将其标记为重写

按照Microsoft上的示例

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM