IRONSOFTWAREHOME
開發者更新

Mediatr C#(對於開發者的運行原理)

Jacob Mellor,首席技術官 @ Team Iron
Jacob Mellor
Updated: 2026年7月19日

MediatR 是一個流行的 .NET 程式庫,實現了調停者模式,讓物件通過調停者進行溝通,而不是直接溝通。 此方法在希望保持元件之間低耦合程度的應用程式中特別有用。 在本文中,我們將詳細探討在 C# 開發環境中的 MediatR,並提供實用的例子和如何將其整合到您的網站應用專案中的指導。 我們還將探討IronPDF library for PDF functionalities in .NET applications,以便在 ASP.NET Core 專案中整合 PDF 功能。

調停者模式與 MediatR 的介紹

Mediatr C# (開發人員使用方式):圖 1 - MediatR 與調停者模式

調停者模式是一種軟體設計模式,透過減少直接依賴來促進物件之間的互動,促進鬆散耦合。 MediatR 提供了一個不複雜的調停者實現,專注於簡單和效率地促進物件溝通。

MediatR 程式庫的核心概念是請求和多個處理器。 在請求點,一個物件封裝操作或行動的詳細資訊,等待 MediatR 機制的處理。 每個請求都有一個對應的處理器或處理方法,其中包含執行請求的業務邏輯。這種結構對於實現指令查詢責任分離(CQRS)模式特別有用,在這種模式下,讀寫操作的分離可以導致更易於維護和擴展的軟體架構。

使用套件管理器控制台在 .NET Core 專案中安裝 MediatR

要在 ASP.NET Core 專案中開始使用 MediatR,首先需要安裝 MediatR 套件。 這可以在 Visual Studio 的套件管理器控制台中通過以下命令來完成:

PM > Install-Package MediatR

Mediatr C# (開發人員使用方式):圖 2 - 安裝 MediatR

安裝套件後,需將 MediatR 新增到 ASP.NET Core 的依賴注入容器中。 這通常在您的網站應用專案的 Program.cs 或 Startup.cs 文件中完成,具體取決於您使用的 ASP.NET Core 版本。 以下是在具有 Minimal 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();

在 Program 類中,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; }
}

在本例中,CreateUserCommand 類實現了 IRequest<int> 介面,表明此請求預計會有一個整數回應,這可能代表所建立使用者的 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
    }
}

在應用程式中使用 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);
    }
}

在此控制器中,Create 動作方法透過調用 _mediator.Send(command) 將 CreateUserCommand 發送給 MediatR。 然後 MediatR 尋找此命令的適當處理器並執行它。 結果會被返回並在同一過程中用來生成回應。

超越基本請求:通知和行為

MediatR 也支持通知和行為。 通知是讓多個處理處可以訂閱和處理的訊息,允許您的應用程式內進行更多事件驅動的方法。 另一方面,行為類似於 MediatR 請求的中介軟體,允許您實現跨切面問題,如日誌、驗證或交易管理。

IronPDF程式庫的介紹

Mediatr C# (開發人員使用方式):圖 3 - IronPDF

IronPDF 是為 .NET 開發人員設計的 C# 程式庫,提供了一種直接在應用程式中建立、編輯和處理 PDF 文件的簡單方式,而不需要擔心寫入問題。 開發人員可以通過直接將網頁或HTML 程式碼轉換為 PDF 格式,而不需要使用複雜的 API。 IronPDF 不僅限於建立 PDF; 它還提供編輯 PDF 的功能,如新增文字、圖像和頁面,甚至可以在 PDF 文件中填寫和編輯表單。 開發人員可以全面處理 PDF,包括合併、拆分,以及使用密碼和權限保護 PDF 文件等任務。

IronPDF 專注於將HTML 轉換為 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");
    }
}

程式碼範例

在這個例子中,假設 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.");
    }
}

在這段程式碼片段中,htmlContent 是一個變數,應包含您的媒體資訊以及 HTML 格式。 這可能包括文字、圖像、影片連結或其他任何 HTML 相容的內容。 IronPDF 將把這個 HTML 內容轉換為 PDF 文件,保留 HTML 指定的佈局和格式。

Mediatr C# (開發人員使用方式):圖 4 - PDF 輸出

結論

根據本文中概述的步驟,您現在應該已經掌握了如何將 MediatR 整合到您的專案中,從基本的指令和查詢處理到利用更高級的功能,如通知和行為。 隨著您的應用程式的成長和演變,MediatR 提供了可以幫助保持程式碼庫清晰、易維護和可擴展的工具和模式。

在結束時,值得注意的是,探索和整合不同的程式庫和工具,如 IronPDF,能夠進一步增強您的 .NET 專案。 IronPDF 提供進階 PDF 功能的免費試用。 對於需要進階 PDF 功能的專案,IronPDF 的授權從 $999 開始,為尋求擴展應用程式功能的 .NET 開發人員提供了強大的解決方案。

Jacob Mellor,首席技術官 @ Team Iron
首席技術官

Jacob Mellor是Iron Software的首席技術官,一位在C# PDF技術上開創先河的遠見工程師。作為Iron Software核心程式碼庫的原開發者,他從創立以來就一直在塑造公司的產品架構,與首席執行官Cameron Rimington一起將公司轉變為服務於NASA、特斯拉和全球政府公司的50多名人員的公司。

...
閱讀更多

相關文章

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

受到全球數百萬工程師的信任

Iron Software的客戶標誌
獲取您的無義務諮詢
填寫以下表格或電子郵件sales@ironsoftware.com
您的詳細資訊將始終保密。
受到全球數百萬工程師的信任
Iron Software的客戶標誌
立即獲取您的30天試用金鑰。
無需信用卡或帳戶建立
C# 用於PDF的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起