我非常关注这个问题。有许多方法可以解释,但它们对我来说无法使用。
我有这堂课:
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`[])'`
我该如何解决? 我在课前使用了覆盖,但错误仍然存在。
答案 0 :(得分:4)
你有两个问题。你应该实施:
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();
}
}
答案 1 :(得分:1)
你的实现功能应该有"覆盖"关键字和相同的参数。
public override void Initialize(IArgument[] properties)
{
//...
}
答案 2 :(得分:0)
实现方法的签名应与抽象方法完全相同。所以你应该这样:
public override void Initialize(IArgument[] properties)
{
...
}
请注意您的输入参数应该来自您在抽象类中提到的类型IArgument [],并记住将其标记为覆盖
上的示例操作