.NET幫助 Mediatr C#(對於開發者的運行原理) Jacob Mellor 更新:2025年7月28日 下載 IronPDF NuGet 下載 DLL 下載 Windows Installer 開始免費試用 LLM副本 LLM副本 將頁面複製為 Markdown 格式,用於 LLMs 在 ChatGPT 中打開 請向 ChatGPT 諮詢此頁面 在雙子座打開 請向 Gemini 詢問此頁面 在 Grok 中打開 向 Grok 詢問此頁面 打開困惑 向 Perplexity 詢問有關此頁面的信息 分享 在 Facebook 上分享 分享到 X(Twitter) 在 LinkedIn 上分享 複製連結 電子郵件文章 MediatR是一個流行的.NET庫,它實現了中介者模式,使物件能夠透過中介者相互通信,而不是直接通信。 這種方法在需要保持組件間低耦合度的應用中尤其有用。 在本文中,我們將詳細介紹 C# 開發中的 MediatR,並提供實際範例和指導,說明如何將其整合到您的 Web 應用程式專案中。 我們還將探索IronPDF庫,該庫用於.NET應用程式的 PDF 功能,以便在ASP.NET Core專案中整合 PDF 功能。 中介模式與 MediatR 的介紹 中介者模式是一種軟體設計模式,它以減少物件間直接依賴關係的方式促進物件間的交互,從而促進鬆散耦合。 MediatR 提供了一種不具雄心的中介器實現,專注於簡化和提高物件通訊的效率。 MediatR 庫的核心是請求和多個處理程序的概念。 在請求點,一個物件封裝了操作或動作的細節,等待 MediatR 機制進行處理。 每個請求都由相應的處理程序或處理方法處理,其中包含執行請求的業務邏輯。這種結構對於實現命令查詢職責分離(CQRS)模式特別有用,因為讀寫操作的分離可以帶來更易於維護和擴展的軟體架構。 使用套件管理器控制台在.NET Core專案中安裝 MediatR 要開始在ASP.NET Core專案中使用 MediatR,首先需要安裝 MediatR 套件。 這可以透過 Visual Studio 中的套件管理器控制台使用以下命令完成: Install-Package MediatR 安裝軟體包後,需要將 MediatR 新增至ASP.NET Core依賴注入容器。 這通常是在 Web 應用程式專案的Program.cs或Startup.cs檔案中完成的,具體取決於您使用的ASP.NET Core版本。 以下是如何在具有最小 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(); $vbLabelText $csharpLabel 在程式類別中,var builder = WebApplication.CreateBuilder(args); 初始化 Web 應用程序,為 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; } } $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 } } $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); } } $vbLabelText $csharpLabel 在這個控制器中,Create 操作方法透過呼叫 _mediator.Send(command) 將CreateUserCommand傳送到 MediatR。 然後 MediatR 找到該命令的適當處理程序並執行它。 傳回結果並用於在同一過程中產生回應。 超越基本請求:通知和行為 MediatR 也支援通知和行為。 通知是多個處理程序可以訂閱和處理的訊息,從而允許在應用程式中採用更事件驅動的方法。 另一方面,行為類似於 MediatR 請求的中間件,可讓您實作日誌記錄、驗證或交易管理等橫切關注點。 IronPDF庫簡介 IronPDF是一個 C# 庫,專為.NET開發人員設計,旨在為他們提供一種簡單的方式,以便在應用程式中建立、編輯和處理 PDF 文件,而無需擔心寫入問題。 開發人員無需使用複雜的 API,只需將網頁或HTML 程式碼直接轉換為 PDF 格式即可產生 PDF。 IronPDF的功能不僅限於創建PDF; 它還提供了編輯 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"); } } 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"); } } $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> {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> {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."); } } $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 的版面配置得以保存。 IronPDF 在 PDF 管理方面提供了哪些高級功能? IronPDF 提供了高級的 PDF 管理功能,例如合併、拆分、編輯 PDF,並以密碼和權限進行保護。這些功能對於生成報告、發票和其他文件等任務非常理想。 MediatR 如何支援 CQRS 模式? MediatR 通過將處理命令請求的邏輯與查詢分開來支援 CQRS 模式。此分離允許每種類型的操作可以獨立進行最佳化和管理,以達到更具可擴展性和可維護性的程式碼。 在 .NET 專案中使用 IronPDF 的優勢是什麼? IronPDF 提供易於使用的 API 來在 .NET 專案中創建、編輯和管理 PDF 文件。其在轉換 HTML 為 PDF 時保留版面的能力使其成為生成報告和文件的強大工具。 Jacob Mellor 立即與工程團隊聊天 首席技術官 Jacob Mellor是Iron Software的首席技術官,也是開創C# PDF技術的前瞻性工程師。作為Iron Software核心代碼庫的原始開發者,他自公司成立以來就塑造了公司的產品架構,並與CEO Cameron Rimington將公司轉型為服務NASA、Tesla以及全球政府機構的50多人公司。Jacob擁有曼徹斯特大學土木工程一級榮譽學士學位(1998年–2001年)。他於1999年在倫敦開立首家軟體公司,並於2005年建立了他的第一個.NET組件,專注於解決Microsoft生態系統中的複雜問題。他的旗艦作品IronPDF和Iron Suite .NET程式庫全球已獲得超過3000萬次NuGet安裝,他的基礎代碼不斷在全球各地驅動開發者工具。擁有25年以上的商業經驗和41年的編碼專業知識,Jacob仍然專注於推動企業級C#、Java和Python PDF技術的創新,同時指導下一代技術領導者。 相關文章 更新2026年2月20日 銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET Jacob Mellor 藉由 CurlDotNet 彌補了這方面的不足,CurlDotNet 是為了讓 .NET 生態系統能熟悉 cURL 而建立的函式庫。 閱讀更多 更新2025年12月20日 RandomNumberGenerator C# 使用RandomNumberGenerator C#類可以幫助將您的PDF生成和編輯項目提升至新水準 閱讀更多 更新2025年12月20日 C#字符串等於(它如何對開發者起作用) 當結合使用強大的PDF庫IronPDF時,開關模式匹配可以讓您構建更智能、更清晰的邏輯來進行文檔處理 閱讀更多 Resharper C#(對於開發者的運行原理)Avalonia C#(對於開發者的運...
更新2026年2月20日 銜接 CLI 簡化與 .NET : 使用 Curl DotNet 與 IronPDF for .NET Jacob Mellor 藉由 CurlDotNet 彌補了這方面的不足,CurlDotNet 是為了讓 .NET 生態系統能熟悉 cURL 而建立的函式庫。 閱讀更多