using IronPdf;
// Disable local disk access or cross-origin requests
Installation.EnableWebSecurity = true;
// Instantiate Renderer
var renderer = new ChromePdfRenderer();
// Create a PDF from a HTML string using C#
var pdf = renderer.RenderHtmlAsPdf("<h1>Hello World</h1>");
// Export to a file or Stream
pdf.SaveAs("output.pdf");
// Advanced Example with HTML Assets
// Load external html assets: Images, CSS and JavaScript.
// An optional BasePath 'C:\site\assets\' is set as the file location to load assets from
var myAdvancedPdf = renderer.RenderHtmlAsPdf("<img src='icons/iron.png'>", @"C:\site\assets\");
myAdvancedPdf.SaveAs("html-with-assets.pdf");
Microsoft.Extensions .DependencyInjection .NET 9 (Arbeiten mit PDF)
Aktualisiert 29. Januar 2024
Teilen Sie:
Microsoft.Extensions.DependencyInjection ist eine leistungsfähige Bibliothek, die von Microsoft .NET zur Verfügung gestellt wird, um die Dependency Injection(DI)ist ein Software-Entwurfsmuster, das eine lose Kopplung fördert und die Testbarkeit von Anwendungen verbessert. DI wird häufig mit Hilfe von.NET Core integrierte DI-Container oder Bibliotheken wie Autofac und Unity. DI beinhaltet das Einfügen von Abhängigkeiten(objekte, die eine Klasse benötigt) in eine Klasse zu integrieren, anstatt dass die Klasse ihre Abhängigkeiten erzeugt. Dies geschieht in der Regel durch eine Konstruktor-, Methoden- oder Eigenschaftsinjektion.
Dependency Injection Container
Dienstregistrierung: Abhängigkeiten werden in einem DI-Container registriert, typischerweise im Composition Root der Anwendung. Diese Registrierungen geben an, wie der Container die Abhängigkeiten erstellen und verwalten soll.
Auflösung von Abhängigkeiten: Wenn eine Komponente eine Abhängigkeit anfordert, löst der DI-Container die Abhängigkeit auf, indem er eine Instanz eines registrierten Typs erzeugt, der eine Erweiterungsmethode verwendet.
Arten von Dependency Injection
Konstruktorinjektion: Registrierte Dienste werden einer Klasse über ihren Konstruktor zur Verfügung gestellt, was die häufigste und empfohlene Form der DI ist.
Methodeninjektion: Dienste werden aufgelöst und als Parameter an eine Methode übergeben. Injektion von Eigenschaften: Singleton-Dienste oder Dienste mit einer begrenzten Lebensdauer werden der Klasse zugewiesen.
Eigenschaftsinjektion: Singleton-Dienste oder Dienste mit einer begrenzten Lebensdauer können Klasseneigenschaften zugewiesen werden. Dieser Ansatz ist jedoch weniger gebräuchlich und wird oft als schlechter als die Konstruktorinjektion angesehen, da er versteckte Abhängigkeiten einführen kann.
Verständnis von Lebenszeiten in Dependency Injection (DI): Scoped, Transient und Singleton
Scoped: Scoped-Abhängigkeiten werden einmal pro Anfrage oder Lebenszeit erstellt, was bedeutet, dass der Container dieselbe Instanz innerhalb einer einzigen Anfrage oder Operation bereitstellt. Diese Konsistenz ist vor allem in Webanwendungen nützlich, wo scoped dependencies dazu beitragen, eine stabile Abhängigkeit während einer Webanfrage aufrechtzuerhalten.
Transiente: Transiente Abhängigkeiten werden jedes Mal instanziiert, wenn sie vom Container angefordert werden. Dies bedeutet, dass eine neue Instanz einer transienten Abhängigkeit immer dann erzeugt wird, wenn sie benötigt wird. Typischerweise werden transiente Abhängigkeiten für leichtgewichtige, zustandslose Dienste oder Komponenten verwendet.
Singleton: Singleton-Abhängigkeiten werden nur einmal instanziiert und während der gesamten Lebensdauer der Anwendung gemeinsam genutzt. Dadurch wird sichergestellt, dass während der gesamten Laufzeit der Anwendung für alle Anfragen dieselbe Instanz einer Singleton-Abhängigkeit verwendet wird. Singleton-Abhängigkeiten werden typischerweise für zustandsbehaftete Dienste oder Komponenten verwendet, die in der gesamten Anwendung universell zugänglich sein müssen.
Installation des Pakets Microsoft.Extensions.DependencyInjection
Um mit der Verwendung von Dependency Injection in einem .NET Core-Projekt zu beginnen, müssen Sie zunächst dieMicrosoft.Extensions.DependencyInjection-Paket. Dies kann über die NuGet-Paketmanager-Konsole in Visual Studio mit dem folgenden Code erfolgen:
IRON VB CONVERTER ERROR developers@ironsoftware.com
Bildschirmfoto
Beispiel: Grundlegende Dependency Injection
In diesem Beispiel wollen wir eine Beispielanwendung erstellen(konsolenanwendung) wobei wir einen Dienstanbieter nutzen, um Dienste aufzulösen und in unser Programm zu integrieren.
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
Das Codeschnipsel erstellt eine Regel für den Versand von Nachrichten namens IMessageService. Es ist wie die Einrichtung eines Plans, wie Nachrichten gesendet werden sollen. Dann wird die Klasse ConsoleMessageService dazu gebracht, diese Regel zu befolgen, indem Console.WriteLine zum Senden von Nachrichten verwendet wird. Dadurch wird der Gedanke des Versendens von Nachrichten vom eigentlichen Prozess getrennt, so dass es einfacher ist, die Art und Weise des Versendens von Nachrichten später zu ändern, falls erforderlich. Sie hilft, das Nachrichtensystem zu organisieren und in der Anwendung einfach zu verwalten.
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
Dieser Code richtet einen serviceProvider zur Verwaltung von Werkzeugen ein. Es fügt ein ConsoleMessageService-Werkzeug hinzu. Dann ruft es das Tool IMessageService von serviceProvider ab und verwendet es, um die Nachricht "Hello, Dependency Injection" zu senden!" an die Konsole.
Ausgabe: Das Programm gibt die String-Meldung "Hello, From Dependency Injection" aus!"
IronPDF: C# PDF-Bibliothek
IronPDF ist eine leistungsstarke Bibliothek für C#, die den komplexen Prozess der PDF-Erzeugung vereinfacht und eine breite Palette von Funktionen für die PDF-Bearbeitung bietet, einschließlich der Fähigkeit, PDF-Dateien zu erzeugenPDFs aus HTMLder Vorgang der Additiontext in PDFs undpDFs mit Bildern bearbeiten, die Erstellung sicherer Dokumente und vieles mehr.
Verwendung von IronPDF mit Dependency Injection
Um die IronPDF-Bibliothek in eine .NET Core-Anwendung zu integrieren, die die Funktionen der Dependency Injection und die Erweiterungsmethoden mit Microsoft.Extensions.DependencyInjection nutzt, können Sie wie folgt vorgehen:
Erstellen Sie eine Schnittstelle, um Ihren PDF-Generierungsdienst zu definieren.
Implementieren Sie die Schnittstelle.
Verwenden Sie die Erweiterungsmethoden, um den Dienst im Container für die Injektion von Abhängigkeiten zu registrieren.
Integrieren Sie den Dienst nach Bedarf in Ihre Anwendung.
Schnittstelle definieren
Erstellen Sie eine Schnittstelle, um Ihren PDF-Generierungsdienst zu definieren.
IRON VB CONVERTER ERROR developers@ironsoftware.com
Dieses Setup löst Abhängigkeiten auf, indem es die IPdfService-Schnittstelle mit IronPdfService implementiert und so einen singulären Diensttyp für die PDF-Erzeugung schafft. Sie wird dann in der gesamten Anwendung referenziert, um eine einheitliche Funktionalität für die Erstellung von PDFs zu gewährleisten.
Verwendung
Injizieren Sie IPdfService in Ihren Controller oder Dienst und verwenden Sie ihn:
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
Dieses Setup stellt sicher, dass der IronPdfService vom Microsoft Extensions Dependency Injection-Container erstellt und verwaltet wird. Sie können den standardmäßigen PDF-Erzeugungsdienst mühelos ersetzen, indem Sie eine alternative Implementierung für die IPdfService-Schnittstelle anbieten, ohne dass Sie den verbrauchenden Code ändern müssen.
Screenshot der PDF-Datei
Schlussfolgerung
Microsoft.Extensions.DependencyInjection ist ein leistungsfähiges Tool in .NET 6 zur Implementierung von Dependency Injection, das die lose Kopplung fördert und die Testbarkeit von Anwendungen verbessert. Durch die Integration von IronPDF, einer funktionsreichen C#-Bibliothek, können Entwickler auf einfache Weise und mit minimalem Aufwand umfassende PDF-Dokumente erstellen. Lizenzierung für IronPDF ist verfügbar.
Jordi beherrscht vor allem Python, C# und C++. Wenn er seine Fähigkeiten bei Iron Software nicht einsetzt, programmiert er Spiele. Durch seine Mitverantwortung für Produkttests, Produktentwicklung und Forschung trägt Jordi wesentlich zur kontinuierlichen Produktverbesserung bei. Die vielseitigen Erfahrungen, die er sammelt, bieten ihm immer wieder neue Herausforderungen, und er sagt, dass dies einer seiner Lieblingsaspekte bei Iron Software ist. Jordi wuchs in Miami, Florida, auf und studierte Informatik und Statistik an der University of Florida.
< PREVIOUS JUnit Java (Wie es für Entwickler funktioniert)
NÄCHSTES > Ninject .NET Core (Wie es für Entwickler funktioniert)