Oi, Eduardo! Como vai?
Agradeço por compartilhar
Gostei da forma como você aplicou polimorfismo usando virtual na classe Reserva e override nas classes ReservaPresencial e ReservaOnline. A lista do tipo List<Reserva> também ficou bem construída, porque permite tratar reservas diferentes de forma genérica, chamando Confirmar() e deixando cada subtipo executar seu próprio comportamento.
Continue praticando essa estrutura, pois ela ajuda bastante a organizar sistemas orientados a objetos. Dica: ao criar novos tipos de reserva, mantenha a mesma ideia: herdar de Reserva e sobrescrever o método Confirmar() com as regras específicas daquele tipo.
Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!