public override void doStep() { Double key = eventMap.Keys.First(); AbstractBusinessEvent evt = eventMap[key]; eventMap.Remove(key); if (evt.GetType() == typeof(FinanceEvent)) { financeEvent((FinanceEvent)evt); } /// else if (evt.GetType() == typeof(SomeEvent)) /// someEvent((SomeEvent)evt) итд }