2012-10-31 71 views
0

没有合适的方法你好,这是我的基类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)' 
+0

确定[你需要包括一个终结?](http://stackoverflow.com/questions/898828/c-sharp -finalize-dispose-pattern) –

+0

另外,你有一个dispose方法,但没有实现IDisposable –

回答

1

方法签名不匹配:

public abstract bool Parse(string input, out Envelope envelope); 
public override Envelope Parse(string input) 

此外,如果它不是一个接口,您不应该为我的类名添加前缀。

1

是的签名不符合您在基类中定义的内容。格式是否应该返回一个字符串,并将字符串作为输出参数?

另外,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 ""; 
    } 

} 
1

你还没有实现的方法与正确的参数

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; 
}