在實際環境中測試
在生產環境中測試無浮水印。
在任何需要的地方都能運作。
Microsoft.Extensions.DependencyInjection 是一個由 Microsoft .NET 提供的強大庫,用於便利依賴注入 (數字輸入),一種軟體設計模式,能夠促進松耦合並提高應用程式的可測試性。DI通常以 .NET 核心內建的 DI 容器或像 Autofac 和 Unity 這樣的庫。DI 涉及注入依賴項 (類別需要的對象) 透過類別,而不是類別自己創建其依賴性。這通常通過建構子、方法或屬性注入來完成。
服務註冊: 依賴在 DI 容器中註冊,通常在應用程式的組成根部分。這些註冊指定了容器應如何建立和管理依賴。
Scoped: Scoped 依賴在每個請求或生命週期內只會創建一次,這意味著在單一請求或操作期間,容器提供相同的實例。這種一致性在網絡應用中尤其有用,因為 Scoped 依賴幫助在一次網絡請求期間維持穩定的依賴性。
Transient: Transient 依賴每次從容器中請求時都會實例化一次。這意味著,每次需要時,都會生成一個新的 Transient 依賴實例。通常,Transient 依賴用於輕量級、無狀態的服務或組件。
要在 .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,添加操作 文字 和 圖像,創建安全文件等等。
要將 IronPDF 函式庫整合到利用 Microsoft.Extensions.DependencyInjection 相依性注入功能和擴展方法的 .NET Core 應用程式中,您可以按以下步驟操作:
創建一個介面來定義您的 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# 庫,開發人員可以輕鬆地 生成 可用。