【发布时间】:2012-12-15 14:51:08
【问题描述】:
我有几个不同的类来表示消息数据(它实现了ToString() 方法)
DatabaseMessageMethod1MessageMethod2Message- 等等……
然后我有一个Message 类,它有一个代表发送者的字符串和一个代表关于消息数据类之一的字符串(来自ToString() 消息)。我创建了这个类来通过我的通信管道发送消息。
在另一端,我从字符串创建一个Message 类,并将其发送到一个特定的方法,该方法确切地知道它是哪种消息数据类型。然后我想将整个消息对象转换为能够访问特定消息数据的东西(例如DatabaseMessage 类)。
class DatabaseMessage
{
public string ToString()
{
// ...
}
}
class Message
{
public string sender;
public string data;
public static Message FromString(string message)
{
// ...
}
}
//...
public void Send()
{
DatabaseMessage db_mess = new DatabaseMessage();
Message m = new Message();
m.sender = "me";
m.data = db_mess.ToString();
}
public void Recieve(string message)
{
Message m = Message.FromString(message);
DatabaseMethod(m);
}
public void DatabaseMethod(Message m)
{
// I want to be able to do this:
DatabaseMessage db_mess = (DatabaseMessage)m;
//...
}
如何实现这一点?
希望这是有道理的。
【问题讨论】:
-
您在寻找object serialization吗?
-
也许
DatabaseMessage、Method1Message、Method2Message类都应该将Message类作为它们的基类?像这样:class DatabaseMessage : Message { /* ... */ } -
但是我如何处理从带有发送者和数据字符串的消息到具有大量参数/字段的 DatabaseMessage 的转换......当我需要转换时,处理这个的代码是什么将数据字符串放入DatabaseMessage。