在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
Microsoft.Extensions.DependencyInjection是一個由 Microsoft .NET 提供的強大庫,用於便利依賴注入(數字輸入),一種軟體設計模式,促進鬆散耦合並提高應用程式的可測試性。 DI 通常使用.NET Core內建DI容器或像Autofac和Unity這樣的庫。 DI 涉及注入依賴項(類別需要的對象)轉化為類別,而非由類別創建其依賴性。 這通常是通過構造函數、方法或屬性注入來完成的。
服務註冊: 依賴項註冊在 DI 容器中,通常是在應用程式的組合根部進行。 這些註冊指定了容器應如何創建和管理相依性。
範圍相依性: 範圍相依性在每個請求或生命週期範圍內創建一次,這意味著容器在單個請求或操作中提供相同的實例。 這種一致性在網路應用中特別有用,其中範圍依賴性有助於在整個網路請求中維護穩定的依賴性。
暫態: 暫態依賴性每次從容器中請求時都會被實例化。 這意味著在需要時會生成一個瞬態依賴的新實例。 通常,暫時性依賴用於輕量級、無狀態的服務或元件。
要在 .NET Core 專案中開始使用依賴注入,您首先需要安裝Microsoft.Extensions.DependencyInjection 套件. 這可以透過 Visual Studio 中的 NuGet 套件管理器主控台使用以下代碼完成:
Install-Package Microsoft.Extensions.DependencyInjection
Install-Package Microsoft.Extensions.DependencyInjection
IRON VB CONVERTER ERROR developers@ironsoftware.com
在此示例中,我們來建立一個範例應用程式(控制台應用程式)在其中,我們將使用服務提供者來解決服務問題並將它們注入我們的程式中。
using Microsoft.Extensions.DependencyInjection;
using System;
public interface IMessageService
{
void SendMessage(string message);
}
public class ConsoleMessageService : IMessageService
{
public void SendMessage(string message)
{
Console.WriteLine(message);
}
}
using Microsoft.Extensions.DependencyInjection;
using System;
public interface IMessageService
{
void SendMessage(string message);
}
public class ConsoleMessageService : IMessageService
{
public void SendMessage(string message)
{
Console.WriteLine(message);
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
這段代碼片段創建了一個名為 IMessageService 的發送消息規則。這就像是制定一個計劃來指導消息應該如何發送。 然後,ConsoleMessageService 類別通過使用 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!");
}
}
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!");
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
此程式碼設置了一個 serviceProvider 以管理工具。 它添加了一個 ConsoleMessageService 工具。 然後,它從serviceProvider檢索IMessageService工具,並使用它來發送訊息「Hello, Dependency Injection」!" 到控制台。
輸出:程式印出字串訊息 "Hello, From Dependency Injection"!請提供您想要翻譯的內容。
IronPDF是一個強大的 C# 庫,簡化了 PDF 生成的複雜過程,提供廣泛的 PDF 操作功能,包括生成的能力從 HTML 生成 PDF,添加操作將文字轉換為PDF和編輯包含圖像的PDF、創建安全文件以及更多其他功能。
要將IronPDF庫整合到利用依賴注入功能和Microsoft.Extensions.DependencyInjection的擴展方法的.NET Core應用程式中,您可以按以下步驟進行:
建立一個界面來定義您的 PDF 生成服務。
實作該介面。
利用擴展方法在相依性注入容器中註冊服務。
建立一個界面來定義您的 PDF 生成服務。
public interface IPdfService
{
void GeneratePdf(string baseUrl, string query, string filePath);
}
public interface IPdfService
{
void GeneratePdf(string baseUrl, string query, string filePath);
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
使用 IronPDF 實現介面來創建 PDF 檔案。
public class IronPdfService : IPdfService
{
public void GeneratePdf(string baseUrl, string query, string filePath)
{
License.LicenseKey = "Your-License-Key";
string encodedQuery = HttpUtility.UrlEncode(query);
string fullUrl = $"{baseUrl}?query={encodedQuery}";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf(fullUrl);
pdf.SaveAs(filePath);
Console.WriteLine($"PDF successfully created from: {fullUrl}");
Console.WriteLine($"Saved to: {filePath}");
}
}
public class IronPdfService : IPdfService
{
public void GeneratePdf(string baseUrl, string query, string filePath)
{
License.LicenseKey = "Your-License-Key";
string encodedQuery = HttpUtility.UrlEncode(query);
string fullUrl = $"{baseUrl}?query={encodedQuery}";
var renderer = new ChromePdfRenderer();
var pdf = renderer.RenderUrlAsPdf(fullUrl);
pdf.SaveAs(filePath);
Console.WriteLine($"PDF successfully created from: {fullUrl}");
Console.WriteLine($"Saved to: {filePath}");
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
在您的 Program.cs 類中,配置依賴注入:
builder.Services.AddSingleton<IPdfService, IronPdfService>();
builder.Services.AddSingleton<IPdfService, IronPdfService>();
IRON VB CONVERTER ERROR developers@ironsoftware.com
此設置將透過使用 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";
_pdfService.GeneratePdf(baseUrl, query, filePath);
return View();
}
}
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";
_pdfService.GeneratePdf(baseUrl, query, filePath);
return View();
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
此設置確保 IronPdfService 由 Microsoft Extensions 的相依性注入容器創建和管理。 您可以通過為 IPdfService 介面提供替代實現,輕鬆替換預設的 PDF 生成服務,而不需要更改使用該服務的代碼。
Microsoft.Extensions.DependencyInjection 是 .NET 6 中一個強大的工具,用於實現依賴注入,這促進了鬆耦合並增強了應用程式的可測試性。 通過整合IronPDF這個功能豐富的C#程式庫,開發人員可以輕鬆生成完整的PDF文檔,只需極少的努力。 IronPDF 的授權可用。