【发布时间】:2020-05-19 23:38:45
【问题描述】:
我目前正在构建一个测试客户端,它需要通过计划 TCP 将数据作为 JSON 发送到服务器应用程序。该协议 - 除了其他元素 - 由消息对象组成。现在,已经需要对 Message 类进行两个不同的修订。它们彼此不相关,具有完全不同的属性。
这里有一个例子来理解这个想法:
协议版本 1
class Message
{
public string sender { get; set; }
public int message_id { get; set; }
public string text { get; set; }
public int priority { get; set; }
public List<string> parameters { get; set; }
public Message()
{
this.parameters = new List<string>();
}
}
协议版本 2
class Message
{
public int id { get; set; }
public int someotherid { get; set; }
public List<string> data { get; set; }
public Message()
{
this.data = new List<string>();
}
}
这些类没有任何共同点,它们不共享共同的基类型或其他东西。如果我仍然想在我的代码中将它们都用作Message,我将如何组织这些不同的版本?
我想出的唯一办法是使用不同的命名空间,因此第一个版本存在于MyProtocol.Rev1.Message 中,另一个存在于MyProtocol.Rev2.Message 中。这会起作用,我可以简单地在using 部分中拉入所需的命名空间,但它有点静态。有没有更好的办法?
【问题讨论】:
-
命名空间是要走的路,不同的修订应该是静态的,所以当它感觉静态时它是完美的。我还将不同的修订版放在不同的库中
-
你是对的,这是有道理的。我想也许有一些我还没有听说过的神奇功能,但命名空间肯定会完成这项工作。
标签: c# class object namespaces version