0

こんにちは、これは私の基本クラスです

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)'
4

3 に答える 3

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;
}
于 2012-10-31T04:44:18.677 に答える
1

メソッドのシグネチャが一致しません:

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

また、インターフェイスでない場合、クラス名の前に I を付けるべきではありません。

于 2012-10-31T04:40:15.627 に答える
1

ええ、署名は基本クラスで定義したものと一致しません。format は文字列を返し、文字列を出力パラメーターとして持つことになっていますか?

また、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 "";
    }

}
于 2012-10-31T04:41:22.700 に答える