У меня есть метод, который получает параметр базового типа и выполняет некоторую предварительную обработку в зависимости от фактического типа параметра.
Вот мой код:
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.
Как лучше всего избежать этого избыточного преобразования?