我的程序生成包含多個字段的特定消息。我需要從字符串中恢復消息,其中每個字段表示爲新行。有一個類(MailServiceContent
),其中包含其他字段邏輯的主字段和其他類的邏輯(例如:SendMailServiceContent
)。我想通過以下方式來恢復消息的整個過程:基礎構造函數處理字符串中的主要字段(主要字段行的數量不是常數,它可以是3或4),接下來是具體構造函數(在SendMailServiceContent
的示例構造函數)處理更多行。是否有可能具體構造函數獲取帶有截斷主字段行的參數字符串數據,以便它可以處理它的一部分?或者,除了在基類中創建一個方法來處理這種情況外,還有另一種「好」方式,它將返回已處理行的數量並省略具體類的行數(這將在「更深」的繼承中產生問題)在接受等級處理之前修改基類的構造函數參數
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
}
}
...
我沒有看到任何其他的解決方案,然後在這種情況下使用構造函數。假設相反,我們有方法'Parse(string data)',它將在所有繼承級別處理來自字符串的適當的字段行,'在繼承類的Parse'方法將從基類調用'Parse'方法,知道哪些繼承類實例應該設置適當的字段。 – TheArtur
好吧,我看到它只是簡單地修改基礎構造函數中的引用。 – TheArtur
你問我另一個問題嗎?或者是否回答你的問題? – CodingYoshi