[英]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.