В настоящее время я создаю тестовый клиент, который должен отправлять данные как JSON по плану TCP в серверное приложение. Протокол - помимо других элементов - состоит из объектов сообщения. Прямо сейчас уже должны быть две разные ревизии класса 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. Есть ли лучший способ?