Как избежать многократного преобразования


У меня есть метод, который получает параметр базового типа и выполняет некоторую предварительную обработку в зависимости от фактического типа параметра.
Вот мой код:


public void OnMessageReceived(QuickFix42.Message message)
{
    if (message is QuickFix42.ExecutionReport)
    {
        ProcessExecutionReport(message as QuickFix42.ExecutionReport);
    }
    else if (message is QuickFix42.AllocationACK)
    {
        ProcessAllocationAck(message as QuickFix42.AllocationACK);
    }
    else if (message is QuickFix42.OrderCancelReject)
    {
        ProcessOrderCancelReject(message as QuickFix42.OrderCancelReject);
    }
    // ...
}

Все работает нормально, но я получаю следующее предупреждение от Visual Studio:

Предупреждение 760 CA1800: Microsoft.Performance: 'message', параметр, приводится к типу 'ExecutionReport' несколько раз в метод MessageProcessor.OnMessageReceived (Message). Кэшируйте результат оператора as или прямого преобразования, чтобы исключить повторяющуюся инструкцию isint.

Как лучше всего избежать этого избыточного преобразования?

5
задан Ani 11 October 2010 в 10:30
поделиться