C#发现覆盖
问题描述:
没有合适的方法你好,这是我的基类C#发现覆盖
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)
此外,如果它不是一个接口,您不应该为我的类名添加前缀。
答
是的签名不符合您在基类中定义的内容。格式是否应该返回一个字符串,并将字符串作为输出参数?
另外,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;
}
确定[你需要包括一个终结?](http://stackoverflow.com/questions/898828/c-sharp -finalize-dispose-pattern) –
另外,你有一个dispose方法,但没有实现IDisposable –