/>
Для упрощения я изменил названия некоторых интерфейсов, которые использую.
И вот в чём проблема: на одной стороне провода у меня есть несколько серверов, которые рассылают разные типы сообщений. На другой стороне провода у меня есть клиент, который должен иметь возможность обрабатывать все типы сообщений.
Все сообщения реализуют один и тот же общий интерфейс IMessage. Моя проблема в том, что когда клиент получает новое сообщение IMessage, как он узнает, какой тип IMessage он получил?
Я предполагал, что могу сделать что-то вроде следующего, но это просто ЧУВСТВУЮ себя ужасно.
Код: Выделить всё
TradeMessage tMessage = newMessage as TradeMessage;
if (tMessage != null)
{
ProcessTradeMessage(tMessage);
}
OrderMessage oMessage = newMessage as OrderMessage;
if (oMessage != null)
{
ProcessOrderMessage(oMessage);
}
Код: Выделить всё
TradeMessage tMessage = new TradeMessage();
if (newMessage.MessageTypeID == tMessage.MessageTypeID)
{
tMessage = newMessage as TradeMessage;
ProcessTradeMessage(tMessage);
}
OrderMessage oMessage = new OrderMessage();
if (newMessage.MessageTypeID == oMessage.MessageTypeID)
{
oMessage = newMessage as OrderMessage;
ProcessOrderMessage(oMessage);
}
Подробнее здесь: https://stackoverflow.com/questions/147 ... sage-types