在inhertiting类处理之前,修改基类的构造函数参数

时间:2016-12-02 21:28:32

标签: c# inheritance

我的程序生成包含多个字段的特定消息。我需要从字符串恢复消息,其中每个字段都表示为一个新行。有一个类(MailServiceContent),其中包含主要字段和其他类(在示例中为SendMailServiceContent)的逻辑,其中包含其他字段的逻辑。 恢复消息的整个过程我想象的方式如下:基础构造函数处理字符串中的主要字段(主要字段行数不是常数,可以是3或4),接下来是具体的构造函数(在SendMailServiceContent的示例构造函数)处理更多行。具体的构造函数是否有可能通过截断的主字段行获取参数字符串数据,以便它可以处理它的部分?或meaby还有另一种“好”的方法来处理这种情况,除了在基类上创建一个方法,它将返回已处理行的数量并在具体类中省略这些行(这将在“更深层次的”继承中出现问题)

class MailServiceContent
{
    ...
    public enum Message_Type
    {
        SEND_MAIL = 1,
        RECEIVE_MAIL = 2,
        RECEIVE_MAIL_PERIODIC = 3,
        UNREGISTER_USER = 4,
        RESPONSE_WITH_USER_ID = 5,
        RESPONSE = 6
    };

    public MailServiceContent(string data){
        //restore main part from string
    }

    public static MailServiceContent Create(byte[] data){
        string decodedData = Encoding.UTF8.GetString(data);

        Message_Type messageType;

        using (StringReader stringReader = new StringReader(decodedData))
        {
            messageType = (Message_Type)int.Parse(stringReader.ReadLine());
        }

        switch (messageType)
        {
            case Message_Type.SEND_MAIL:
                return new SendMailServiceContent(decodedData);
            case Message_Type.RECEIVE_MAIL_PERIODIC:
                return new PeriodicReceiveMailServiceContent(decodedData);
            case Message_Type.RESPONSE_WITH_USER_ID:
                return new ResponseMailServiceContent(decodedData);
            case Message_Type.RESPONSE:
                return new ResponseWithIDMailServiceContent(decodedData);
            default:
                return new MailServiceContent(decodedData);
        }
    }
}

class SendMailServiceContent: MailServiceContent
{
    ...
    public SendMailServiceContent(string data):base(data){
        //restore further part from string
    }
}
...

0 个答案:

没有答案