IRONSOFTWAREHOME
開発者向けアップデート

Microsoft.Extensions.DependencyInjection .NET 9(PDFの作業)

Jacob Mellor、Ironチームの最高技術責任者(CTO)
Jacob Mellor
Updated: 2026年4月21日

Microsoft.Extensions.DependencyInjection は、依存性注入 (DI) を容易にするための Microsoft .NET によって提供される強力なライブラリであり、疎結合を促進し、アプリケーションのテスト容易性を向上させるソフトウェアデザインパターンです。 DI は、多くの場合、.NET Core に組み込まれた DI コンテナや、Autofac、Unity のようなライブラリを使用して実装されます。 DI は、クラスが必要とする依存性(オブジェクト)をクラスに注入するのではなく、クラスがその依存性を生成する方法に関与します。 これは通常、コンストラクター、メソッド、またはプロパティの注入を通じて行われます。

Microsoft.Extensions.DependencyInjection .NET 6 (PDFとの連携): 図1 - Microsoft.Extensions.DependencyInjectionNameのドキュメント

依存性注入コンテナ

  1. サービス登録: 依存性は通常、アプリケーションの作曲ルートで DI コンテナに登録されます。 これらの登録は、コンテナが依存性を作成し管理する方法を指定します。

  2. 依存性の解決: コンポーネントが依存性を要求するとき、DI コンテナは拡張メソッドを使用して登録されたタイプのインスタンスを作成することにより依存性を解決します。

依存性注入のタイプ

  • コンストラクター注入: 登録されたサービスはクラスを通じてそのコンストラクターを通じて提供されます。これは最も一般的で推奨される DI の形式です。
  • メソッド注入: サービスは解決され、メソッドにパラメーターとして渡されます。
  • プロパティ注入: シングルトンサービスまたはスコープされたライフタイムを持つサービスは、クラスのプロパティに割り当てられます。 しかし、このアプローチは一般的ではなく、コンストラクター注入よりも劣ると見なされることが多いです。なぜなら、隠れた依存性を招く可能性があるからです。

依存性注入 (DI) におけるライフタイムの理解: スコープ、トランジェント、シングルトン

  1. スコープ: スコープされた依存性は、リクエストまたはライフタイムスコープごとに一度作成され、コンテナは単一のリクエストまたは操作内で同じインスタンスを提供します。 この一貫性は、特に Web アプリケーションで有用であり、スコープされた依存性は Web リクエストを通じて安定した依存性を維持するのに役立ちます。
  2. トランジェント: トランジェント依存性は、コンテナから要求されるたびにインスタンス化されます。 このことは、トランジェント依存性が必要になるたびに新しいインスタンスが生成されることを意味します。 通常、トランジェント依存性は軽量でステートレスなサービスやコンポーネントに使用されます。
  3. シングルトン: シングルトン依存性は一度だけインスタンス化され、アプリケーションの全体のライフタイムを通じて共有されます。これにより、アプリケーションの期間中、すべてのリクエストに対して同じインスタンスが使用されます。 シングルトン依存性は、通常、アプリケーション全体で普遍的にアクセス可能である必要がある状態を持つサービスやコンポーネントに使用されます。

Microsoft.Extensions.DependencyInjection パッケージのインストール

.NET Core プロジェクトで依存性注入を開始するには、まず Microsoft.Extensions.DependencyInjection パッケージ をインストールする必要があります。 これは、Visual Studio の NuGet パッケージマネージャーコンソールで次のコマンドを使用して実施できます。

PM > Install-Package Microsoft.Extensions.DependencyInjection

スクリーンショット

Microsoft.Extensions.DependencyInjection .NET 6 (PDFとの連携): 図2 - パッケージをインストールするためのコマンドをターミナルに入力

例: 基本的な依存性注入

この例では、サービスプロバイダーを使用してサービスを解決し、プログラムに注入するサンプルアプリ (コンソールアプリケーション) を作成してみましょう。

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
    }
}

コードスニペットはメッセージ送信用のインターフェースIMessageServiceを作成し、それはメッセージの送信方法に関する契約のようなものです。 クラスConsole.WriteLineを使ってメッセージを送信します。 この分離により、メッセージを送信するという概念を、送信方法とは独立して変更することができ、システムが柔軟かつ管理しやすくなります。

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!");
    }
}

このコードは、サービスを管理するための serviceProvider を設定します。 ConsoleMessageService を IMessageService の実装として登録し、必要な場所に注入できるようにします。 メソッドMainは、その後、serviceProviderからIMessageServiceのインスタンスを取得し、それを使ってコンソールにメッセージを送信します。

出力: プログラムは文字列メッセージ "Hello, From Dependency Injection!" を表示します。

Microsoft.Extensions.DependencyInjection .NET 6 (PDFとの連携): 図3 - 上記コードからのコンソール出力

IronPDF: C# PDFライブラリ

IronPDF は、PDF 生成の複雑なプロセスを簡素化し、PDF の操作に関する多くの機能を提供する C# の強力なライブラリであり、HTML から PDF を生成したり、PDF にテキストを追加したり、画像で PDF を編集したり、安全な文書を作成することができます。

Microsoft.Extensions.DependencyInjection .NET 6 (PDFとの連携): 図4 - Microsoft.Extensions.DependencyInjection C#例 (開発者向けの動作方法): 図2 - IronPDF

依存性注入で IronPDF を使用する

Microsoft.Extensions.DependencyInjection の拡張機能および依存性注入機能を利用して、.NET Core アプリケーションに IronPDF ライブラリを統合するには、次の手順に従います。

  1. PDF 生成サービスを定義するインターフェイスを作成します。
  2. インターフェイスを実装します。
  3. 拡張メソッドを利用して、依存性注入コンテナにサービスを登録します。
  4. アプリケーションに必要に応じてサービスを注入します。

インターフェイスの定義

PDF 生成サービスを定義するインターフェイスを作成します。

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

インターフェイスの実装

IronPDF を使用して 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}");
    }
}

サービスの登録

あなたのProgram.csクラスで、依存性の注入を設定してください:

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

このセットアップは、IronPDFService を使用して IPdfService インターフェイスを実装することにより依存性を解決し、PDF 生成のシングルトンサービスタイプを確立します。 その後、アプリケーション全体で参照され、PDF 生成の一貫した機能を確保します。

使用法

IPdfService をコントローラーまたはサービスに注入し、それを使用します。

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();
    }
}

このセットアップにより、IronPDFService は Microsoft Extensions Dependency Injection コンテナによって作成および管理されます。 IPdfService インターフェイスの代替実装を提供することで、書き換えなしでデフォルトの PDF 生成サービスを簡単に置き換えることができます。

PDF ファイルのスクリーンショット

Microsoft.Extensions.DependencyInjection .NET 6 (PDFとの連携): 図5 - Microsoft Extensions Dependency InjectionコンテナをIronPDFと組み合わせて使用した例の出力

結論

Microsoft.Extensions.DependencyInjection は、依存性注入を実装するための .NET 6 の強力なツールであり、疎結合を促進し、アプリケーションのテストのしやすさを向上させます。 IronPDF を統合することにより、豊富な機能を備えた C# ライブラリを使用して、開発者は容易に包括的な PDF ドキュメントを生成することができます。 IronPDF のライセンス が利用可能です。

Jacob Mellor、Ironチームの最高技術責任者(CTO)
最高技術責任者(CTO)

ジェイコブ・メラーはIron Softwareの最高技術責任者(CTO)であり、C# PDFテクノロジーを開拓する先見的なエンジニアです。Iron Softwareのコアコードベースを支えるオリジナル開発者として、彼は創業以来、会社の製品アーキテクチャを形成し、CEOのCameron Rimingtonとともに、会社をNASA、Tesla、および世界的な政府機関にサービスを提供する50人以上の会社に変えました。1999年にロンドンで最初のソフトウェアビジネスを開業し、2005年に最初 for .NETコンポーネントを作成した後、Microsoftのエコシステム全体で複雑な問題を解決することを専門としました。

関連する記事

Key in blue circle

無料の30日間トライアルキーをすぐに入手してください。

Your trial license will be sent to your email address

制限なし。100% ロック解除済み。クレジットカード不要。

OR
bullet_checkedクレジットカードやアカウントの作成は不要です。制限なし。100% ロック解除済み。クレジットカード不要。
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
無料のライブデモを予約する
Booking Badge

世界中の数百万人のエンジニアから信頼されています。

ライセンスはより安く
義務のない相談を受ける
下記のフォームを記入するか、sales@ironsoftware.comにメールしてください。
あなたの詳細は常に守秘されます。
世界中の数百万人のエンジニアから信頼されています。
ライセンスはより安く
あなたの無料30日間の試用キーをすぐに入手。
クレジットカードやアカウントの作成は不要です。
PDF用C# NuGetライブラリ
NuGetでインストール

バージョン: 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. ソリューションエクスプローラーで参照を右クリックし、NuGetパッケージを管理を選択
  2. ブラウズを選択し、"IronPDF"を検索
  3. パッケージを選択してインストール
C# PDF DLL
DLLをダウンロード

バージョン: 2026.9

またはここからWindowsインストーラーをダウンロードする。

  1. IronPDFを~/Libsなどの場所に解凍し、ソリューションディレクトリ内に配置する
  2. Visual Studioソリューションエクスプローラーで参照を右クリックし、"IronPDF.dll"をブラウズして選択

ライセンスは$999から