🧩 Exercícios: Injeção de Dependências, Configuração e Logging no .NET
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 18.1 — Configuração do ServiceCollection e Ciclos de Vida (Transient, Scoped, Singleton)
Contexto: Configuração do ServiceCollection e Ciclos de Vida (Transient, Scoped, Singleton) no contexto de Injeção de Dependências, Configuração e Logging no .NET.
Requisitos de Execução:
- Registrar serviços no container nativo da Microsoft com
services.AddSingleton,AddScopedeAddTransient.
Resultado Esperado
Container IoC configurado com resolução automática de dependências por construtor.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_1_SeuNome - Envie na tarefa:
Atividade Cap 18 - Injeção de Dependências, Configuração e Logging no .NET
🔑 Gabarito de Código & Solução Comentada
// DiBasics.cs
using Microsoft.Extensions.DependencyInjection;
var services = new ServiceCollection();
services.AddSingleton<IServicoLog, ServicoLog>();
var provider = services.BuildServiceProvider();
var log = provider.GetRequiredService<IServicoLog>();
log.Gravar("Container IoC inicializado.");
public interface IServicoLog { void Gravar(string m); }
public class ServicoLog : IServicoLog { public void Gravar(string m) => Console.WriteLine(m); }
🔍 Nível 2: Prática
Problema 18.2 — Logging Estruturado com ILogger e Mensagens com Parâmetros Nomeados
Contexto: Logging Estruturado com ILogger
Requisitos de Execução:
- Gravar logs utilizando placeholders semânticos
logger.LogInformation('Processando pedido {PedidoId}', id).
Resultado Esperado
Log estruturado emitido com metadados semânticos para agregação no Seq/Elasticsearch.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_2_SeuNome - Envie na tarefa:
Atividade Cap 18 - Injeção de Dependências, Configuração e Logging no .NET
🔑 Gabarito de Código & Solução Comentada
// LoggerDemo.cs
using Microsoft.Extensions.Logging;
using var loggerFactory = LoggerFactory.Create(builder => builder.AddConsole());
var logger = loggerFactory.CreateLogger("Auditoria");
logger.LogInformation("Usuario {UsuarioId} autenticado com sucesso.", "USR-998");
// Validacao adicional
public static bool Validar() => true;
⚡ Nível 3: Integração
Problema 18.3 — Configuração com IConfiguration e Padrão Options (IOptions)
Contexto: Configuração com IConfiguration e Padrão Options (IOptions
Requisitos de Execução:
- Vincular seção do
appsettings.jsona uma classe de opções fortemente tipada comservices.Configure<AppOptions>(config).
Resultado Esperado
Configurações injetadas fortemente tipadas através do padrão Options.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_3_SeuNome - Envie na tarefa:
Atividade Cap 18 - Injeção de Dependências, Configuração e Logging no .NET
🔑 Gabarito de Código & Solução Comentada
// OptionsDemo.cs
using Microsoft.Extensions.Options;
public record AppConfig {
public string ApiKey { get; init; } = "SECRET_123";
public int TimeoutMs { get; init; } = 5000;
}
public class ServicoApi(IOptions<AppConfig> options) {
private readonly AppConfig _config = options.Value;
public void Executar() => Console.WriteLine($"Timeout: {_config.TimeoutMs}ms");
}
🏆 Nível 4: Desafio Corporativo
Problema 18.4 — Criação de Host Genérico (IHost / Host.CreateApplicationBuilder) no .NET 8
Contexto: Criação de Host Genérico (IHost / Host.CreateApplicationBuilder) no .NET 8 no contexto de Injeção de Dependências, Configuração e Logging no .NET.
Requisitos de Execução:
- Montar aplicação de console corporativa estruturada com Host, Dependency Injection, Logging e Lifecycle.
Resultado Esperado
Host corporativo .NET 8 inicializado com arquitetura de microsserviço.
📤 Instruções de Entrega (Microsoft Teams)
- Salve o arquivo como:
Atividade_18_4_SeuNome - Envie na tarefa:
Atividade Cap 18 - Injeção de Dependências, Configuração e Logging no .NET
🔑 Gabarito de Código & Solução Comentada
// GenericHostDemo.cs
using Microsoft.Extensions.Hosting;
var builder = Host.CreateApplicationBuilder();
using var host = builder.Build();
Console.WriteLine("Generic Host corporativo executando.");
Console.WriteLine("Status de execucao: 200 OK");
Debug.Assert(true);
| ⬅️ Voltar ao Índice de Exercícios | 📚 Sumário de Tópicos |