.NETヘルプ Mediatr C#(開発者向けの動作方法) Curtis Chau 更新日:7月 28, 2025 Download IronPDF NuGet Download テキストの検索と置換 テキストと画像のスタンプ Start Free Trial Copy for LLMs Copy for LLMs Copy page as Markdown for LLMs Open in ChatGPT Ask ChatGPT about this page Open in Gemini Ask Gemini about this page Open in Grok Ask Grok about this page Open in Perplexity Ask Perplexity about this page Share Share on Facebook Share on X (Twitter) Share on LinkedIn Copy URL Email article MediatRは人気のある.NETライブラリで、メディエーターを介してオブジェクト同士が直接ではなくコミュニケートできる仲介者パターンを実装します。 このアプローチは、コンポーネント間で低い結び付きレベルを保つことが望ましいアプリケーションに特に有用です。 この記事では、C#開発の文脈でMediatRを詳細に見て、実用的な例とウェブアプリケーションプロジェクトへの統合方法に関するガイダンスを提供します。 また、ASP.NET Core プロジェクトでPDF機能を統合するためのIronPDFライブラリ for PDF functionalities in .NET applicationsも探ります。 メディエーター・パターンとMediatRへのイントロダクション メディエーター・パターンは、オブジェクト間の直接的な依存関係を削減して、疎結合を促進する形で相互作用を容易にするソフトウェア設計パターンです。 MediatRは、オブジェクト間のコミュニケーション促進においてシンプルさと効率性に重点を置いた野心的でない仲介者実装を提供します。 MediatRライブラリの中心にはリクエストと複数のハンドラの概念があります。 リクエストポイントで、オブジェクトはMediatRメカニズムによる処理を待つ操作や行動の詳細をカプセル化します。 各リクエストは対応するハンドラまたはハンドルメソッドで処理され、リクエストを実行するビジネスロジックが含まれます。この構造は、読み取りと書き込み操作の分離がよりメンテナブルでスケーラブルなソフトウェアアーキテクチャにつながるコマンドクエリ責任分離(CQRS)パターンを実装するのに特に有用です。 パッケージマネージャコンソールでの.NET CoreプロジェクトへのMediatRのインストール ASP.NET CoreプロジェクトでMediatRを使用し始めるには、まずMediatRパッケージをインストールする必要があります。 これは、次のコマンドを使用してVisual Studioのパッケージマネージャコンソールで行うことができます。 Install-Package MediatR パッケージをインストールした後、MediatRをASP.NET Core依存注入コンテナに追加することが必要です。 これは通常、使用しているASP.NET Coreのバージョンに応じて、ウェブアプリケーションプロジェクトのProgram.csまたはStartup.csファイルで行います。 最小限のAPIプレゼンテーションレイヤーを持つプログラムでこれを行う方法を示します。 // Initialize a new web application var builder = WebApplication.CreateBuilder(args); // Add MediatR to the service container builder.Services.AddMediatR(typeof(Program).Assembly); // Build the web application var app = builder.Build(); // Initialize a new web application var builder = WebApplication.CreateBuilder(args); // Add MediatR to the service container builder.Services.AddMediatR(typeof(Program).Assembly); // Build the web application var app = builder.Build(); ' Initialize a new web application Dim builder = WebApplication.CreateBuilder(args) ' Add MediatR to the service container builder.Services.AddMediatR(GetType(Program).Assembly) ' Build the web application Dim app = builder.Build() $vbLabelText $csharpLabel プログラムクラスで、var builder = WebApplication.CreateBuilder(args);は、MediatR統合の舞台を整えつつウェブアプリケーションを初期化します。 初めてのMediatRリクエストとハンドラの作成 MediatRリクエストは、特定の操作を実行するために必要なデータを表すシンプルなクラスです。 新しいユーザーを作成するためのコマンドを表すリクエストクラスの例を示します。 public class CreateUserCommand : IRequest<int> { public string Name { get; set; } public string Email { get; set; } public int Id { get; set; } } public class CreateUserCommand : IRequest<int> { public string Name { get; set; } public string Email { get; set; } public int Id { get; set; } } Public Class CreateUserCommand Implements IRequest(Of Integer) Public Property Name() As String Public Property Email() As String Public Property Id() As Integer End Class $vbLabelText $csharpLabel この例では、CreateUserCommandクラスは、IRequestインターフェースを実装し、このリクエストが作成されたユーザーのIDを表す整数応答を期待することを示しています。 次に、このリクエストに対するハンドラを作成する必要があります。各ハンドラ内で、Handleメソッドはリクエストのロジックが実行される場所です。 public class CreateUserHandler : IRequestHandler<CreateUserCommand, int> { public async Task<int> Handle(CreateUserCommand command, CancellationToken token) { // Implement logic to create a user here // For this example, let's pretend we create a user and return the ID return await Task.FromResult(1); // Assume the user's ID is 1 } } public class CreateUserHandler : IRequestHandler<CreateUserCommand, int> { public async Task<int> Handle(CreateUserCommand command, CancellationToken token) { // Implement logic to create a user here // For this example, let's pretend we create a user and return the ID return await Task.FromResult(1); // Assume the user's ID is 1 } } Public Class CreateUserHandler Implements IRequestHandler(Of CreateUserCommand, Integer) Public Async Function Handle(ByVal command As CreateUserCommand, ByVal token As CancellationToken) As Task(Of Integer) ' Implement logic to create a user here ' For this example, let's pretend we create a user and return the ID Return Await Task.FromResult(1) ' Assume the user's ID is 1 End Function End Class $vbLabelText $csharpLabel アプリケーションでのMediatRの使用 MediatRを設定するのに使用されたプロセスに従って、アプリケーションのワークフロー内でそれを統合します。 これは通常、ASP.NET Coreアプリケーションのコントローラまたはエンドポイントを通じて行います。 APIコントローラを使用した例を幾つか挙げます: [ApiController] [Route("[controller]")] public class UsersController : ControllerBase { private readonly IMediator _mediator; public UsersController(IMediator mediator) { _mediator = mediator; } [HttpPost] public async Task<ActionResult<int>> Create(CreateUserCommand command) { var userId = await _mediator.Send(command); return CreatedAtRoute("GetUser", new { id = userId }, command); } } [ApiController] [Route("[controller]")] public class UsersController : ControllerBase { private readonly IMediator _mediator; public UsersController(IMediator mediator) { _mediator = mediator; } [HttpPost] public async Task<ActionResult<int>> Create(CreateUserCommand command) { var userId = await _mediator.Send(command); return CreatedAtRoute("GetUser", new { id = userId }, command); } } <ApiController> <Route("[controller]")> Public Class UsersController Inherits ControllerBase Private ReadOnly _mediator As IMediator Public Sub New(ByVal mediator As IMediator) _mediator = mediator End Sub <HttpPost> Public Async Function Create(ByVal command As CreateUserCommand) As Task(Of ActionResult(Of Integer)) Dim userId = Await _mediator.Send(command) Return CreatedAtRoute("GetUser", New With {Key .id = userId}, command) End Function End Class $vbLabelText $csharpLabel このコントローラでは、Createアクションメソッドが_mediator.Send(command)を呼び出すことでMediatRにCreateUserCommandを送信します。 MediatRはこのコマンドの適切なハンドラを見つけて、それを実行します。 結果は返され、同じプロセスでレスポンスの生成に使用されます。 基本的なリクエストを超えて:通知と振る舞い MediatRは通知と振る舞いもサポートしています。 通知は、複数のハンドラがサブスクライブして処理できるメッセージであり、アプリケーション内でよりイベント駆動型のアプローチを可能にします。 一方、振る舞いはMediatRリクエストのためのミドルウェアのようなものであり、ロギング、バリデーション、またはトランザクション管理のようなクロスカッティングな懸念事項を実装できます。 IronPDFライブラリの紹介 IronPDFは、アプリケーション内でPDFファイルを作成、編集、および処理するための簡単な方法を必要とする.NET開発者向けに設計されたC#ライブラリです。 開発者は、ウェブページやHTMLコードを直接PDF形式に変換することで、複雑なAPIを使わずにPDFを生成できます。 IronPDFはPDFを作成するだけにとどまらず、 PDF内のフォームの追加や編集、テキスト、画像の追加、ページの追加、さらにはPDF文書内でのフォームの記入および編集などの編集機能を提供します。 開発者はPDFファイルのマージ、分割、パスワードおよびアクセス許可を使用したセキュリティの設定など、包括的にPDFを操作できます。 IronPDFは、元のレイアウトとスタイルを正確に保持したHTML to PDF変換を専門としています。 これにより、レポート、請求書、文書化などのウェブベースのコンテンツからPDFを生成するのに最適です。 HTMLファイル、URL、さらには生のHTML文字列からPDFファイルへの変換をサポートしています。 using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // 1. Convert HTML String to PDF var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent); pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // 2. Convert HTML File to PDF var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath); pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // 3. Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } using IronPdf; class Program { static void Main(string[] args) { var renderer = new ChromePdfRenderer(); // 1. Convert HTML String to PDF var htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"; var pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent); pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf"); // 2. Convert HTML File to PDF var htmlFilePath = "path_to_your_html_file.html"; // Specify the path to your HTML file var pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath); pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf"); // 3. Convert URL to PDF var url = "http://ironpdf.com"; // Specify the URL var pdfFromUrl = renderer.RenderUrlAsPdf(url); pdfFromUrl.SaveAs("URLToPDF.pdf"); } } Imports IronPdf Friend Class Program Shared Sub Main(ByVal args() As String) Dim renderer = New ChromePdfRenderer() ' 1. Convert HTML String to PDF Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>" Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent) pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf") ' 2. Convert HTML File to PDF Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath) pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf") ' 3. Convert URL to PDF Dim url = "http://ironpdf.com" ' Specify the URL Dim pdfFromUrl = renderer.RenderUrlAsPdf(url) pdfFromUrl.SaveAs("URLToPDF.pdf") End Sub End Class $vbLabelText $csharpLabel コード例 この例では、MediatRリクエストはPDFに含めたいメディアコンテンツまたはメタデータの何らかの形式を指すと仮定します。 MediatRはIronPDFの機能とは直接関連がないため、メディア情報や参照を含むHTMLコンテンツからPDFドキュメントを作成することを始めとしてアプローチします。 using IronPdf; public class PdfGenerator { public void CreatePdfWithMediaInfo(string htmlContent) { // Insert your License Key here if required License.LicenseKey = "License-Key"; // Initialize the HtmlToPdf renderer var renderer = new ChromePdfRenderer(); // Create an HTML template with media information string htmlTemplate = $@" <html> <head> <title>Media Information</title> </head> <body> <h1>Media Details</h1> <!-- Insert your media information here --> {htmlContent} </body> </html>"; // Convert the HTML string to a PDF document var pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate); pdfDocument.SaveAs("MediaInformation.pdf"); } } class Program { static void Main(string[] args) { // Example HTML content with MediatR information string htmlContent = @" <div> <h2>MediatR Information</h2> <p>MediatR is a media tracking system...</p> </div>"; // Create an instance of PdfGenerator PdfGenerator pdfGenerator = new PdfGenerator(); // Call the CreatePdfWithMediaInfo method to generate the PDF pdfGenerator.CreatePdfWithMediaInfo(htmlContent); Console.WriteLine("PDF generated successfully."); } } using IronPdf; public class PdfGenerator { public void CreatePdfWithMediaInfo(string htmlContent) { // Insert your License Key here if required License.LicenseKey = "License-Key"; // Initialize the HtmlToPdf renderer var renderer = new ChromePdfRenderer(); // Create an HTML template with media information string htmlTemplate = $@" <html> <head> <title>Media Information</title> </head> <body> <h1>Media Details</h1> <!-- Insert your media information here --> {htmlContent} </body> </html>"; // Convert the HTML string to a PDF document var pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate); pdfDocument.SaveAs("MediaInformation.pdf"); } } class Program { static void Main(string[] args) { // Example HTML content with MediatR information string htmlContent = @" <div> <h2>MediatR Information</h2> <p>MediatR is a media tracking system...</p> </div>"; // Create an instance of PdfGenerator PdfGenerator pdfGenerator = new PdfGenerator(); // Call the CreatePdfWithMediaInfo method to generate the PDF pdfGenerator.CreatePdfWithMediaInfo(htmlContent); Console.WriteLine("PDF generated successfully."); } } Imports IronPdf Public Class PdfGenerator Public Sub CreatePdfWithMediaInfo(ByVal htmlContent As String) ' Insert your License Key here if required License.LicenseKey = "License-Key" ' Initialize the HtmlToPdf renderer Dim renderer = New ChromePdfRenderer() ' Create an HTML template with media information Dim htmlTemplate As String = $" <html> <head> <title>Media Information</title> </head> <body> <h1>Media Details</h1> <!-- Insert your media information here --> {htmlContent} </body> </html>" ' Convert the HTML string to a PDF document Dim pdfDocument = renderer.RenderHtmlAsPdf(htmlTemplate) pdfDocument.SaveAs("MediaInformation.pdf") End Sub End Class Friend Class Program Shared Sub Main(ByVal args() As String) ' Example HTML content with MediatR information Dim htmlContent As String = " <div> <h2>MediatR Information</h2> <p>MediatR is a media tracking system...</p> </div>" ' Create an instance of PdfGenerator Dim pdfGenerator As New PdfGenerator() ' Call the CreatePdfWithMediaInfo method to generate the PDF pdfGenerator.CreatePdfWithMediaInfo(htmlContent) Console.WriteLine("PDF generated successfully.") End Sub End Class $vbLabelText $csharpLabel このコードスニペットでは、htmlContentはHTML形式でメディア情報を含むべき変数です。 これには、テキスト、画像、動画へのリンク、その他HTML互換のコンテンツが含まれる可能性があります。 IronPDFはこのHTMLコンテンツをPDFドキュメントに変換し、HTMLで指定されたレイアウトおよびフォーマットを保持します。 結論 この記事で説明したステップに従うことで、MediatRをプロジェクトに組み込み、基本的なコマンドおよびクエリハンドリングから通知および振る舞いなどの高度な機能を活用するための確固たる基盤を得ることができるはずです。 アプリケーションが成長および進化するにつれて、MediatRはコードベースをクリーンで、保守性が高く、拡張性のある状態に保つのに役立つツールとパターンを提供します。 締めくくりとして、異なるライブラリやツール、例えばIronPDFを調査し、それを統合することで、.NETプロジェクトをさらに充実させることができることを述べる価値があります。 IronPDFは高度なPDF機能の無料試用版を提供します。 高度なPDF機能を必要とするプロジェクトに対しては、IronPDFのライセンスは$799から始まり、アプリケーションの機能を拡張したい.NET開発者にとって堅牢なソリューションを提供します。 よくある質問 MediatRをASP.NET Coreプロジェクトに統合する方法は? MediatRをASP.NET Coreプロジェクトに統合するには、Program.csまたはStartup.csファイルで依存性注入コンテナに追加します。 パッケージマネージャ コンソールでInstall-Package MediatRコマンドを使用してインストールできます。 MediatRにおいてリクエストとハンドラーはどのような役割を果たすか? MediatRでは、リクエストは操作の詳細をカプセル化し、ハンドラーはこれらのリクエストを処理して必要なビジネス ロジックを実行します。 これにより、アプリケーションの保守性を向上させるコマンド クエリ責任分離(CQRS)パターンがサポートされます。 通知と振る舞いはどのようにしてMediatRを強化するか? MediatRの通知により、複数のハンドラーが単一のメッセージに反応でき、イベント ドリブン型のアプローチが促進されます。 振る舞いはミドルウェアとして機能し、ログ記録、バリデーション、例外処理などの横断的関心を処理します。 .NETアプリケーションでメディエーターパターンを使用する利点は何ですか? MediatRによって実装されるメディエーター パターンは、コンポーネント間の直接的な依存性を減らし、緩い結合を促進します。 これにより、クリーン アーキテクチャの原則に従い、.NETアプリケーションの保守性とスケーラビリティが強化されます。 .NETアプリケーションでHTMLをPDFに変換する方法は? IronPDFは、.NETアプリケーションでHTMLをPDFに変換できます。 RenderHtmlAsPdfメソッドを使用してHTML文字列を変換したり、RenderUrlAsPdfを使用してURLを変換し、生成されるPDFでレイアウトを保持できます。 PDF管理のためのIronPDFの高度な機能は何ですか? IronPDFは、PDFのマージ、分割、編集、およびパスワードと権限によるセキュリティ確保などの高度なPDF管理機能を提供します。 これらの機能は、レポートや請求書、その他の文書の生成などのタスクに理想的です。 MediatRはどのようにCQRSパターンをサポートしますか? MediatRは、コマンドリクエスト処理のロジックをクエリから分離することでCQRSパターンをサポートします。 この分離により、各操作タイプを独立して最適化および管理でき、よりスケーラブルで保守性の高いコードが実現します。 .NETプロジェクトでIronPDFを使用する利点は何ですか? IronPDFは、.NETプロジェクトでPDFファイルを作成、編集、管理するための使いやすいAPIを提供します。 HTMLをPDFに変換してレイアウトを保持する機能は、レポートやドキュメントの生成において強力なツールとなります。 Curtis Chau 今すぐエンジニアリングチームとチャット テクニカルライター Curtis Chauは、カールトン大学でコンピュータサイエンスの学士号を取得し、Node.js、TypeScript、JavaScript、およびReactに精通したフロントエンド開発を専門としています。直感的で美しいユーザーインターフェースを作成することに情熱を持ち、Curtisは現代のフレームワークを用いた開発や、構造の良い視覚的に魅力的なマニュアルの作成を楽しんでいます。開発以外にも、CurtisはIoT(Internet of Things)への強い関心を持ち、ハードウェアとソフトウェアの統合方法を模索しています。余暇には、ゲームをしたりDiscordボットを作成したりして、技術に対する愛情と創造性を組み合わせています。 関連する記事 更新日 9月 4, 2025 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む 更新日 9月 4, 2025 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む 更新日 8月 5, 2025 C# Switch Pattern Matching(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む Resharper C#(開発者向けの動作方法)Avalonia C#(開発者向けの動...
更新日 9月 4, 2025 RandomNumberGenerator C# RandomNumberGenerator C#クラスを使用すると、PDF生成および編集プロジェクトを次のレベルに引き上げることができます 詳しく読む
更新日 9月 4, 2025 C# String Equals(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む
更新日 8月 5, 2025 C# Switch Pattern Matching(開発者向けの仕組み) 強力なPDFライブラリであるIronPDFと組み合わせることで、switchパターンマッチングは、ドキュメント処理のためのよりスマートでクリーンなロジックを構築できます 詳しく読む