[英]C# no Suitable method found for override
嗨,这是我的基础课
public abstract class IEnvelopeFactory {
public Queue<IEnvelopeFactory> m_Queue;
//public Queue<IEnvelopeFactory> m_Queue<IEnvelopeFactory>;
public IEnvelopeFactory(){
}
~IEnvelopeFactory(){
}
public virtual void Dispose(){
}
/// <summary>
/// Parsing
/// </summary>
/// <param name="input"></param>
/// <param name="envelope"></param>
public abstract bool Parse(string input, out Envelope envelope);
/// <summary>
/// Formatting
/// </summary>
/// <param name="env"></param>
/// <param name="envStr"></param>
public abstract bool Format(Envelope env, out string envStr);
}
子类如下
public class XMLTYPE4Factory : IEnvelopeFactory
{
public XMLTYPE4 m_XMLTYPE4;
public XMLTYPE4Factory()
{
}
~XMLTYPE4Factory()
{
}
public override void Dispose()
{
}
/// <summary>
/// Parsing
/// </summary>
/// <param name="input"></param>
public override Envelope Parse(string input)
{
return null;
}
/// <summary>
/// Formatting
/// </summary>
/// <param name="env"></param>
public override string Format(Envelope env)
{
return "";
}
}
我收到以下错误
'XMLTYPE4Factory' does not implement inherited abstract member
'IEnvelopeFactory.Format(CCN.MSG.ENV.Envelope, out string)'
'XMLTYPE4Factory' does not implement inherited abstract member
'IEnvelopeFactory.Parse(string, out CCN.MSG.ENV.Envelope)'
方法签名不匹配:
public abstract bool Parse(string input, out Envelope envelope);
public override Envelope Parse(string input)
另外,如果类名不是接口,则不应在其前面加上I。
是的,签名与您在基类中定义的不匹配。 格式是否应该返回一个字符串并具有一个字符串作为输出参数?
同样,C#接口中的标准命名约定也以I开头。您应该从基类中删除I前缀。
public class XMLTYPE4Factory : IEnvelopeFactory {
public XMLTYPE4 m_XMLTYPE4;
public XMLTYPE4Factory()
{
}
~XMLTYPE4Factory()
{
}
public override void Dispose()
{
}
/// <summary>
/// Parsing
/// </summary>
/// <param name="input"></param>
public override Envelope Parse(string input, out string envStr)
{
envStr= null;
return null;
}
/// <summary>
/// Formatting
/// </summary>
/// <param name="env"></param>
public override string Format(Envelope env, out string envStr)
{
envStr = null;
return "";
}
}
您尚未使用正确的参数实现方法
Envelope env;
string s;
public override Envelope Parse(string input,out Envelope env)
{
env = new Envelope();
return env;
}
public override string Format(Envelope env,out string s)
{
s="somestring";
return s;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.