Modelo publicador e assinante de eventos em C#
Nesta lição, você vai avisar os objetos inscritos sempre que o status de um pedido mudar, usando eventos.
Introdução
Os eventos permitem que quem está de fora se inscreva para receber avisos, mas só a classe dona do evento tem permissão para dispará-lo. É assim que se implementa o modelo publicador e assinante de forma segura em C#.
A classe Order declara o evento StatusChanged com o tipo EventHandler<string>, ou seja, ele carrega uma string com o novo status. Em Main, uma lambda se inscreve para imprimir o status na tela. Quando Update("Shipped") é chamado, o operador ?. só dispara o evento se houver inscritos, então o programa imprime Shipped.
Exemplo de C# executável
using System;
class Order
{
public event EventHandler<string>? StatusChanged;
public void Update(string status) => StatusChanged?.Invoke(this, status);
}
class Program
{
static void Main()
{
var order = new Order();
order.StatusChanged += (_, status) => Console.WriteLine(status);
order.Update("Shipped");
}
}
ShippedPratique com o depurador
Pratique com um desafio
Use o conteúdo desta lição para resolver um problema real. Cada desafio roda no navegador, com testes instantâneos e uma revisão por IA.
Todos os desafios