IRONSOFTWAREHOME
ATUALIZAÇÕES DO DESENVOLVEDOR

Microsoft.Extensions .DependencyInjection .NET 9 (Trabalhando com PDF)

Curtis Chau
Curtis Chau
Updated: 21 de abril de 2026

Microsoft.Extensions.DependencyInjection é uma poderosa biblioteca fornecida pelo Microsoft .NET para facilitar a Injeção de Dependência (DI), um padrão de projeto de software que promove o baixo acoplamento e aprimora a testabilidade em aplicativos. A injeção de dependência (DI) geralmente é implementada usando o contêiner de DI integrado do .NET Core ou bibliotecas como Autofac e Unity. A Injeção de Dependência (DI) envolve injetar dependências (objetos que uma classe precisa) em uma classe, em vez da classe criar suas próprias dependências. Isso geralmente é feito por meio de injeção de construtor, método ou propriedade.

Microsoft.Extensions.DependencyInjection .NET 6 (Trabalhando com PDF): Figura 1 - documentação Microsoft.Extensions.DependencyInjectionName

Contêiner de Injeção de Dependência

  1. Registro de serviço: As dependências são registradas em um contêiner de injeção de dependência (DI), normalmente na raiz de composição do aplicativo. Esses registros especificam como o contêiner deve criar e gerenciar as dependências.

  2. Resolução de Dependências: Quando um componente solicita uma dependência, o contêiner de Injeção de Dependência (DI) resolve a dependência criando uma instância de um tipo registrado que utiliza um método de extensão.

Tipos de Injeção de Dependência

  • Injeção de Construtor: Os serviços registrados são fornecidos a uma classe por meio de seu construtor, que é a forma mais comum e recomendada de Injeção de Dependência.
  • Injeção de método: Os serviços são resolvidos e passados ​​como parâmetros para um método.
  • Injeção de propriedades: Serviços singleton ou serviços com um tempo de vida definido podem ser atribuídos a propriedades de classe. No entanto, essa abordagem é menos comum e frequentemente considerada inferior à injeção de dependência por construtor, pois pode introduzir dependências ocultas.

Entendendo os tempos de vida na Injeção de Dependência (DI): Escopo, Transiente e Singleton

  1. Com escopo: Dependências com escopo são criadas uma vez por solicitação ou escopo de vida útil, o que significa que o contêiner fornece a mesma instância dentro de uma única solicitação ou operação. Essa consistência é particularmente útil em aplicações web, onde dependências com escopo ajudam a manter uma dependência estável ao longo de uma requisição web.
  2. Transitório: Dependências transitórias são instanciadas cada vez que são solicitadas ao contêiner. Isso implica que uma nova instância de uma dependência transitória é gerada sempre que necessário. Normalmente, as dependências transitórias são usadas para serviços ou componentes leves e sem estado.
  3. Singleton: Dependências singleton são instanciadas apenas uma vez e compartilhadas durante toda a vida útil da aplicação. Isso garante que a mesma instância de uma dependência singleton seja usada para todas as requisições durante a execução da aplicação. As dependências singleton são normalmente empregadas para serviços ou componentes com estado que precisam ser universalmente acessíveis em toda a aplicação.

Instalando o pacote Microsoft.Extensions.DependencyInjection

Para começar a usar a injeção de dependência em um projeto .NET Core , primeiro você precisa instalar o pacote Microsoft.Extensions.DependencyInjection . Isso pode ser feito através do Console do Gerenciador de Pacotes NuGet no Visual Studio com o seguinte comando:

PM > Install-Package Microsoft.Extensions.DependencyInjection

Captura de tela

Microsoft.Extensions.DependencyInjection .NET 6 (Trabalhando com PDF): Figura 2 - Digite o comando no terminal para instalar o pacote

Exemplo: Injeção de Dependência Básica

Neste exemplo, vamos criar um aplicativo de exemplo (aplicativo de console) no qual utilizaremos um provedor de serviços para resolver serviços e injetá-los em nosso programa.

using Microsoft.Extensions.DependencyInjection;
using System;

// Define a service interface
public interface IMessageService
{
    void SendMessage(string message);
}

// Implement the service interface
public class ConsoleMessageService : IMessageService
{
    public void SendMessage(string message)
    {
        Console.WriteLine(message); // Output the message to the console
    }
}

O trecho de código cria uma interface IMessageService para enviar mensagens, como um contrato para como as mensagens devem ser enviadas. A classe ConsoleMessageService implementa esta interface usando Console.WriteLine para enviar mensagens. Essa separação permite que o conceito de envio de mensagens seja alterado independentemente da forma como são enviadas, tornando o sistema flexível e gerenciável.

class Program
{
    static void Main(string[] args)
    {
        // Create a service provider
        var serviceProvider = new ServiceCollection()
            // Register the service implementation
            .AddTransient<IMessageService, ConsoleMessageService>()
            .BuildServiceProvider();

        // Resolve the service
        var messageService = serviceProvider.GetRequiredService<IMessageService>();

        // Use the service to send a message
        messageService.SendMessage("Hello, From Dependency Injection!");
    }
}

Este código configura um provedor de serviços para gerenciar serviços. Ele registra o ConsoleMessageService como a implementação do IMessageService , tornando-o disponível para ser injetado onde for necessário. O método Main então recupera uma instância de IMessageService do serviceProvider e a utiliza para enviar uma mensagem ao console.

Saída: O programa imprime a mensagem "Olá, da Injeção de Dependência!"

Microsoft.Extensions.DependencyInjection .NET 6 (Trabalhando com PDF): Figura 3 - Saída do console do código acima

IronPDF: Biblioteca PDF em C#

IronPDF é uma poderosa biblioteca para C# que simplifica o complexo processo de geração de PDFs, oferecendo uma ampla gama de recursos para manipulação de PDFs, incluindo a capacidade de gerar PDFs a partir de HTML , adicionar texto a PDFs e editar PDFs com imagens , criar documentos seguros e muito mais.

Microsoft.Extensions.DependencyInjection .NET 6 (Trabalhando com PDF): Figura 4 - Exemplo Microsoft.Extensions.DependencyInjection C# (Como funciona para desenvolvedores): Figura 2 - IronPDF

Utilizando IronPDF com Injeção de Dependência

Para integrar a biblioteca IronPDF em um aplicativo .NET Core , aproveitando os recursos de injeção de dependência e os métodos de extensão com Microsoft.Extensions.DependencyInjection, você pode proceder da seguinte forma:

  1. Crie uma interface para definir seu serviço de geração de PDFs.
  2. Implemente a interface.
  3. Utilize métodos de extensão para registrar o serviço no contêiner de injeção de dependência.
  4. Incorpore o serviço em sua aplicação conforme necessário.

Definir interface

Crie uma interface para definir seu serviço de geração de PDFs.

public interface IPdfService
{
    void GeneratePdf(string baseUrl, string query, string filePath);
}

Implementar interface

Implemente a interface usando o IronPDF para criar o arquivo PDF.

using IronPdf;
using System;
using System.Web;

// Implement the PDF generation interface
public class IronPdfService : IPdfService
{
    public void GeneratePdf(string baseUrl, string query, string filePath)
    {
        License.LicenseKey = "Your-License-Key"; // Set the IronPDF license key
        string encodedQuery = HttpUtility.UrlEncode(query); // Encode the query string
        string fullUrl = $"{baseUrl}?query={encodedQuery}"; // Construct the full URL
        var renderer = new ChromePdfRenderer(); // Create a PDF renderer
        var pdf = renderer.RenderUrlAsPdf(fullUrl); // Render the PDF from the URL
        pdf.SaveAs(filePath); // Save the PDF to the specified file path
        Console.WriteLine($"PDF successfully created from: {fullUrl}");
        Console.WriteLine($"Saved to: {filePath}");
    }
}

Serviço de Registro

Na sua classe Program.cs, configure a injeção de dependência:

builder.Services.AddSingleton<IPdfService, IronPdfService>();

Essa configuração resolve as dependências implementando a interface IPdfService com IronPDFService , estabelecendo um tipo de serviço singleton para geração de PDF. Em seguida, ele é referenciado em todo o aplicativo, garantindo uma funcionalidade consistente para a geração de PDFs.

Uso

Injete o IPdfService em seu controlador ou serviço e utilize-o:

public class MyController : Controller
{
    private readonly IPdfService _pdfService;
    
    public MyController(IPdfService pdfService)
    {
        _pdfService = pdfService;
    }
    
    public IActionResult GeneratePdf()
    {
        string baseUrl = "https://ironpdf.com/";
        string query = "Hello World from IronPDF !";
        string filePath = "Demo.pdf";
        
        // Use the injected PDF service to generate a PDF
        _pdfService.GeneratePdf(baseUrl, query, filePath);
        
        return View();
    }
}

Essa configuração garante que o IronPDFService seja criado e gerenciado pelo contêiner de Injeção de Dependência das Extensões da Microsoft. Você pode substituir facilmente o serviço padrão de geração de PDF, oferecendo uma implementação alternativa para a interface IPdfService , tudo isso sem alterar o código que utiliza o serviço.

Captura de tela do arquivo PDF

Microsoft.Extensions.DependencyInjection .NET 6 (Trabalhando com PDF): Figura 5 - Exemplo de saída usando o contêiner de injeção de dependência do Microsoft Extensions em conjunto com o IronPDF

Conclusão

Microsoft.Extensions.DependencyInjection é uma ferramenta poderosa no .NET 6 para implementar injeção de dependência, o que promove baixo acoplamento e melhora a testabilidade em aplicações. Ao integrar o IronPDF, uma biblioteca C# rica em recursos, os desenvolvedores podem gerar facilmente documentos PDF abrangentes com o mínimo esforço. O licenciamento do IronPDF está disponível.

Curtis Chau
Redator Técnico

Curtis Chau é bacharel em Ciência da Computação (Universidade Carleton) e se especializa em desenvolvimento front-end, com experiência em Node.js, TypeScript, JavaScript e React. Apaixonado por criar interfaces de usuário intuitivas e esteticamente agradáveis, Curtis gosta de trabalhar com frameworks modernos e criar manuais bem estruturados e visualmente atraentes.

...
Leia mais

Artigos relacionados

Key in blue circle

Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.

Your trial license will be sent to your email address

Sem limitações. 100% desbloqueado. Sem cartão de crédito.

bullet_checkedNão é necessário cartão de crédito nem criação de conta.Sem limitações. 100% desbloqueado. Sem cartão de crédito.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried IronPDF
Agende sua demonstração ao vivo gratuita.
Booking Badge

Aprovado por milhões de engenheiros em todo o mundo.

Logotipos dos clientes da Iron Software
Agende sua consulta sem compromisso.
Preencha o formulário abaixo ou envie um e-mail para sales@ironsoftware.com
Os seus dados serão sempre mantidos em sigilo.
Aprovado por milhões de engenheiros em todo o mundo.
Logotipos dos clientes da Iron Software
Obtenha sua chave de avaliação gratuita de 30 dias instantaneamente.
Não é necessário cartão de crédito nem criação de conta.