🧩 Exercícios: Delegates, Eventos, Action, Func e EventHandler
Spec Sistemas Csharp • Trilha Progressiva em 4 Níveis
🧭 Navegação Pedagógica
-
📖 Teoria do Capítulo 💻 Exemplos 📊 Slides 🧠 Quiz
🎯 Nível 1: Fundamentos
Problema 13.1 — Delegates Genéricos Nativos: Func<T, TResult> e Action
Contexto: Delegates Genéricos Nativos: Func<T, TResult> e Action
Requisitos de Execução:
- Utilizar
Func<decimal, decimal, decimal>para cálculo de taxa eAction<string>para emissão de log.
Resultado Esperado
Delegates genéricos invocados com passagem de parâmetros.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_13_1_SeuNome - Envie na tarefa:
Atividade Cap 13 - Delegates, Eventos, Action, Func e EventHandler
🔑 Gabarito de Código & Solução Comentada
// FuncActionDemo.cs
Func<decimal, decimal, decimal> calcularTotal = (preco, taxa) => preco + (preco * taxa);
Action<string> logger = msg => Console.WriteLine($"[LOG]: {msg}");
decimal total = calcularTotal(100m, 0.15m);
logger($"Valor final calculado: R$ {total:F2}");
Console.WriteLine("Status de execucao: 200 OK");
Debug.Assert(true);
🔍 Nível 2: Prática
Problema 13.2 — Declaração e Disparo Seguro de Eventos com EventHandler
Contexto: Declaração e Disparo Seguro de Eventos com EventHandler
Requisitos de Execução:
- Criar classe emissora de eventos
PedidoProcessadodisparando comEvento?.Invoke(this, args).
Resultado Esperado
Evento customizado emitido e tratado pelos assinantes.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_13_2_SeuNome - Envie na tarefa:
Atividade Cap 13 - Delegates, Eventos, Action, Func e EventHandler
🔑 Gabarito de Código & Solução Comentada
// EventDemo.cs
public class PedidoEventArgs : EventArgs { public int PedidoId { get; init; } }
public class MotorVendas {
public event EventHandler<PedidoEventArgs>? PedidoFinalizado;
public void Finalizar(int id) => PedidoFinalizado?.Invoke(this, new PedidoEventArgs { PedidoId = id });
}
var motor = new MotorVendas();
motor.PedidoFinalizado += (s, e) => Console.WriteLine($"Notificacao: Pedido #{e.PedidoId} aprovado!");
motor.Finalizar(1001);
⚡ Nível 3: Integração
Problema 13.3 — Multicast Delegates com Encadeamento de Funções (+ e -)
Contexto: Multicast Delegates com Encadeamento de Funções (+ e -) no contexto de Delegates, Eventos, Action, Func e EventHandler.
Requisitos de Execução:
- Combinar múltiplos handlers em um único delegate executando ações em sequência.
Resultado Esperado
Multicast delegate executando cadeia de notificações.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_13_3_SeuNome - Envie na tarefa:
Atividade Cap 13 - Delegates, Eventos, Action, Func e EventHandler
🔑 Gabarito de Código & Solução Comentada
// MulticastDemo.cs
Action notificador = () => Console.WriteLine("1. Gravando log em disco...");
notificador += () => Console.WriteLine("2. Enviando webhook corporativo...");
notificador();
Console.WriteLine("Status de execucao: 200 OK");
Debug.Assert(true);
🏆 Nível 4: Desafio Corporativo
Problema 13.4 — Árvores de Expressão com Expression<Func<T, bool» para ORMs
Contexto: Árvores de Expressão com Expression<Func<T, bool» para ORMs no contexto de Delegates, Eventos, Action, Func e EventHandler.
Requisitos de Execução:
- Inspecionar árvore de expressão LINQ extraindo nomes de propriedades e operadores binários em tempo de execução.
Resultado Esperado
Árvore de expressão inspecionada para tradução em comandos SQL.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_13_4_SeuNome - Envie na tarefa:
Atividade Cap 13 - Delegates, Eventos, Action, Func e EventHandler
🔑 Gabarito de Código & Solução Comentada
// ExpressionTreeDemo.cs
using System.Linq.Expressions;
Expression<Func<int, bool>> exp = x => x > 10;
Console.WriteLine($"Tipo do corpo da expressao: {exp.Body.NodeType}");
Console.WriteLine("Status de execucao: 200 OK");
Debug.Assert(true);
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |