Test in einer Live-Umgebung
Test in der Produktion ohne Wasserzeichen.
Funktioniert überall, wo Sie es brauchen.
Erweiterungsmethoden sind eine leistungsstarke Funktion in C#, mit der Sie bestehenden Typen neue Funktionen hinzufügen können, ohne ihren Quellcode zu ändern. Sie können sehr nützlich sein, um Ihren Code lesbarer und wartbarer zu machen. In diesem Leitfaden werden wir die Grundlagen der Erweiterungsmethoden und ihre Implementierung erkunden.
Erweiterungsmethoden sind spezielle statische Methoden, die so aufgerufen werden können, als wären sie Instanzmethoden eines bestehenden Typs. Sie sind eine bequeme Möglichkeit, neue Methoden zu einer bestehenden Klasse hinzuzufügen, ohne den ursprünglichen Quellcode zu ändern oder von der Klasse zu erben.
Um eine Erweiterungsmethode zu erstellen, müssen Sie eine statische Methode innerhalb einer statischen Klasse definieren. Der erste Parameter der Methode sollte der Typ sein, den Sie erweitern wollen, mit diesem Schlüsselwort vorangestellt. Dieses spezielle Schlüsselwort teilt dem C#-Compiler mit, dass es sich um eine Erweiterungsmethode handelt.
Da wir nun wissen, was Erweiterungsmethoden sind, sollten wir eine implementieren. Stellen Sie sich vor, Sie haben eine Zeichenkette, die Sie umkehren wollen. Anstatt dafür eine eigene Funktion zu schreiben, können Sie eine Erweiterungsmethode für die String-Klasse erstellen.
Erstellen wir zunächst eine neue statische Klasse namens StringExtensions. Der Klassenname ist nicht wichtig, aber es ist eine übliche Konvention, den Namen des Typs, der erweitert wird, gefolgt von "Extensions" zu verwenden. Innerhalb dieser Klasse definieren wir eine statische Methode namens Reverse:
public static class StringExtensions
{
public static string Reverse(this string input)
{
char[] chars = input.ToCharArray();
Array.Reverse(chars);
return new string(chars);
}
}
public static class StringExtensions
{
public static string Reverse(this string input)
{
char[] chars = input.ToCharArray();
Array.Reverse(chars);
return new string(chars);
}
}
Public Module StringExtensions
<System.Runtime.CompilerServices.Extension> _
Public Function Reverse(ByVal input As String) As String
Dim chars() As Char = input.ToCharArray()
Array.Reverse(chars)
Return New String(chars)
End Function
End Module
In diesem Beispiel haben wir eine öffentliche statische String-Methode namens Reverse mit einem einzigen Parameter erstellt. Das Schlüsselwort this vor dem String-Typ zeigt an, dass es sich um eine Erweiterungsmethode für die String-Klasse handelt.
Sehen wir uns nun an, wie wir diese neue Erweiterungsmethode in unserer Klasse Program verwenden können:
class Program
{
static void Main(string[] args)
{
string example = "Hello, World!";
string reversed = example.Reverse();
Console.WriteLine(reversed); // !dlroW ,olleH
}
}
class Program
{
static void Main(string[] args)
{
string example = "Hello, World!";
string reversed = example.Reverse();
Console.WriteLine(reversed); // !dlroW ,olleH
}
}
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim example As String = "Hello, World!"
Dim reversed As String = example.Reverse()
Console.WriteLine(reversed) ' !dlroW ,olleH
End Sub
End Class
Beachten Sie, dass wir keine Instanz der Klasse StringExtensions erstellen mussten. Stattdessen haben wir die Reverse-Methode direkt auf die String-Instanz angewendet, als wäre es eine Instanzmethode.
Erweiterungsmethoden sehen aus und verhalten sich wie Instanzmethoden, aber es gibt einige wichtige Unterschiede, die Sie beachten sollten:
Sie können eine bestehende Methode nicht mit einer Erweiterungsmethode überschreiben
Wenn der erweiterte Typ eine Methode mit der gleichen Signatur wie eine Erweiterungsmethode hat, hat die Instanzmethode immer Vorrang. Erweiterungsmethoden werden nur aufgerufen, wenn es keine passende Instanzmethode gibt.
Nachdem wir nun die Grundlagen der Erweiterungsmethoden in C# verstanden haben, wollen wir uns einige Beispiele aus der Praxis ansehen.
Stellen Sie sich vor, Sie wollen die Anzahl der Wörter in einer Zeichenkette zählen. Sie können eine WordCount-Erweiterungsmethode für die String-Klasse erstellen:
public static class StringExtensions
{
public static int WordCount(this string input)
{
return input.Split(new[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Length;
}
}
public static class StringExtensions
{
public static int WordCount(this string input)
{
return input.Split(new[] { ' ', '\t', '\r', '\n' }, StringSplitOptions.RemoveEmptyEntries).Length;
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Jetzt können Sie ganz einfach die Anzahl der Wörter in einer Zeichenkette wie dieser zählen:
string text = "Extension methods are awesome!";
int wordCount = text.WordCount();
Console.WriteLine($"The text has {wordCount} words."); // The text has 4 words.
string text = "Extension methods are awesome!";
int wordCount = text.WordCount();
Console.WriteLine($"The text has {wordCount} words."); // The text has 4 words.
Dim text As String = "Extension methods are awesome!"
Dim wordCount As Integer = text.WordCount()
Console.WriteLine($"The text has {wordCount} words.") ' The text has 4 words.
Angenommen, Sie haben eine Sammlung von Zahlen und möchten den Medianwert berechnen. Sie können eine Erweiterungsmethode für IEnumerable erstellen:
public static class EnumerableExtensions
{
public static double Median(this IEnumerable source)
{
int[] sorted = source.OrderBy(x => x).ToArray();
int count = sorted.Length;
if (count == 0)
{
throw new InvalidOperationException("The collection is empty.");
}
if (count % 2 == 0)
{
return (sorted[count / 2 - 1] + sorted[count / 2]) / 2.0;
}
else
{
return sorted[count / 2];
}
}
}
public static class EnumerableExtensions
{
public static double Median(this IEnumerable source)
{
int[] sorted = source.OrderBy(x => x).ToArray();
int count = sorted.Length;
if (count == 0)
{
throw new InvalidOperationException("The collection is empty.");
}
if (count % 2 == 0)
{
return (sorted[count / 2 - 1] + sorted[count / 2]) / 2.0;
}
else
{
return sorted[count / 2];
}
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Mit dieser Erweiterungsmethode können Sie den Medianwert einer Sammlung leicht ermitteln:
int[] numbers = { 5, 3, 9, 1, 4 };
double median = numbers.Median();
Console.WriteLine($"The median value is {median}."); // The median value is 4.
int[] numbers = { 5, 3, 9, 1, 4 };
double median = numbers.Median();
Console.WriteLine($"The median value is {median}."); // The median value is 4.
Dim numbers() As Integer = { 5, 3, 9, 1, 4 }
Dim median As Double = numbers.Median()
Console.WriteLine($"The median value is {median}.") ' The median value is 4.
Nehmen wir an, Sie möchten den Wochenanfang für ein bestimmtes Datum ermitteln. Sie können eine Erweiterungsmethode für die DateTime-Struktur erstellen:
public static class DateTimeExtensions
{
public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek = DayOfWeek.Monday)
{
int diff = (7 + (dt.DayOfWeek - startOfWeek)) % 7;
return dt.AddDays(-1 * diff).Date;
}
}
public static class DateTimeExtensions
{
public static DateTime StartOfWeek(this DateTime dt, DayOfWeek startOfWeek = DayOfWeek.Monday)
{
int diff = (7 + (dt.DayOfWeek - startOfWeek)) % 7;
return dt.AddDays(-1 * diff).Date;
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Jetzt können Sie den Wochenanfang für jedes beliebige Datum leicht finden:
DateTime today = DateTime.Today;
DateTime startOfWeek = today.StartOfWeek();
Console.WriteLine($"The start of the week is {startOfWeek.ToShortDateString()}."); // The start of the week is 17/06/2024.
DateTime today = DateTime.Today;
DateTime startOfWeek = today.StartOfWeek();
Console.WriteLine($"The start of the week is {startOfWeek.ToShortDateString()}."); // The start of the week is 17/06/2024.
IRON VB CONVERTER ERROR developers@ironsoftware.com
In diesem Abschnitt stellen wir Ihnen IronPDF vor, unsere branchenführende Bibliothek für die Erzeugung von und Arbeit mit PDF-Dateien in C#. Wir werden auch sehen, wie wir Erweiterungsmethoden nutzen können, um eine nahtlose und intuitive Erfahrung bei der Arbeit mit dieser Bibliothek zu schaffen.
IronPDF konvertiert HTML in PDF so, dass das Layout und der Stil des Inhalts so erhalten bleiben, wie er in einem Webbrowser erscheinen würde. Die Bibliothek kann mit Roh-HTML aus Dateien, URLs und Strings arbeiten. Hier ist ein kurzer Überblick:
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");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
' 1. Convert HTML String to PDF
Dim htmlContent = "<h1>Hello, IronPDF!</h1><p>This is a PDF from an HTML string.</p>"
Dim pdfFromHtmlString = renderer.RenderHtmlAsPdf(htmlContent)
pdfFromHtmlString.SaveAs("HTMLStringToPDF.pdf")
' 2. Convert HTML File to PDF
Dim htmlFilePath = "path_to_your_html_file.html" ' Specify the path to your HTML file
Dim pdfFromHtmlFile = renderer.RenderHtmlFileAsPdf(htmlFilePath)
pdfFromHtmlFile.SaveAs("HTMLFileToPDF.pdf")
' 3. Convert URL to PDF
Dim url = "http://ironpdf.com" ' Specify the URL
Dim pdfFromUrl = renderer.RenderUrlAsPdf(url)
pdfFromUrl.SaveAs("URLToPDF.pdf")
End Sub
End Class
Bevor wir uns mit den Erweiterungsmethoden beschäftigen, sehen wir uns an, wie man mit IronPDF eine einfache PDF-Datei aus HTML erstellt:
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();;
var PDF = renderer.RenderHtmlAsPdf("Hello, World!");
PDF.SaveAs("HelloWorld.PDF");
}
}
using IronPdf;
class Program
{
static void Main(string[] args)
{
var renderer = new ChromePdfRenderer();;
var PDF = renderer.RenderHtmlAsPdf("Hello, World!");
PDF.SaveAs("HelloWorld.PDF");
}
}
Imports IronPdf
Friend Class Program
Shared Sub Main(ByVal args() As String)
Dim renderer = New ChromePdfRenderer()
Dim PDF = renderer.RenderHtmlAsPdf("Hello, World!")
PDF.SaveAs("HelloWorld.PDF")
End Sub
End Class
Dieses Codeschnipsel erstellt eine PDF-Datei mit dem Text "Hello, World!"und speichert es in einer Datei mit dem Namen "HelloWorld.PDF".
Nun wollen wir uns ansehen, wie wir mit Hilfe von Erweiterungsmethoden die Funktionalität von IronPDF erweitern und die Arbeit damit erleichtern können. Wir können zum Beispiel eine Erweiterungsmethode erstellen, die eine Instanz der String-Klasse nimmt und daraus direkt ein PDF erzeugt.
public static class StringExtensions
{
public static void SaveAsPdf(this string htmlContent, string filePath)
{
var renderer = new ChromePdfRenderer();;
var PDF = renderer.RenderHtmlAsPdf(htmlContent);
PDF.SaveAs(filePath);
}
}
public static class StringExtensions
{
public static void SaveAsPdf(this string htmlContent, string filePath)
{
var renderer = new ChromePdfRenderer();;
var PDF = renderer.RenderHtmlAsPdf(htmlContent);
PDF.SaveAs(filePath);
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Mit dieser Erweiterungsmethode können wir nun ein PDF direkt aus einer Zeichenkette erzeugen:
string html = "Extension Methods and IronPDFGenerating PDFs has never been easier!";
html.SaveAsPdf("ExtensionMethodsAndIronPDF.PDF");
string html = "Extension Methods and IronPDFGenerating PDFs has never been easier!";
html.SaveAsPdf("ExtensionMethodsAndIronPDF.PDF");
Dim html As String = "Extension Methods and IronPDFGenerating PDFs has never been easier!"
html.SaveAsPdf("ExtensionMethodsAndIronPDF.PDF")
Eine weitere nützliche Erweiterungsmethode, die wir erstellen können, ist eine, die ein PDF aus einer URL generiert. Um dies zu erreichen, können wir die Klasse Uri erweitern:
public static class UriExtensions
{
public static void SaveAsPdf(this Uri url, string filePath)
{
var renderer = new ChromePdfRenderer();;
var PDF = renderer.RenderUrlAsPdf(url.AbsoluteUri);
PDF.SaveAs(filePath);
}
}
public static class UriExtensions
{
public static void SaveAsPdf(this Uri url, string filePath)
{
var renderer = new ChromePdfRenderer();;
var PDF = renderer.RenderUrlAsPdf(url.AbsoluteUri);
PDF.SaveAs(filePath);
}
}
IRON VB CONVERTER ERROR developers@ironsoftware.com
Jetzt können wir ganz einfach eine PDF-Datei aus einer URL wie dieser erzeugen:
Uri url = new Uri("https://www.ironpdf.com/");
url.SaveAsPdf("UrlToPdf.PDF");
Uri url = new Uri("https://www.ironpdf.com/");
url.SaveAsPdf("UrlToPdf.PDF");
Dim url As New Uri("https://www.ironpdf.com/")
url.SaveAsPdf("UrlToPdf.PDF")
Und voilà - wir haben das Konzept der Erweiterungsmethoden in C# erkundet, gelernt, wie man sie mit statischen Methoden und statischen Klassen implementiert, und reale Beispiele für verschiedene Typen verwendet. Darüber hinaus haben wir IronPDF vorgestellt, eine Bibliothek zur Erzeugung von und Arbeit mit PDF-Dateien in C#. Wenn Sie beginnen, Erweiterungsmethoden und IronPDF zusammen zu verwenden, werden Sie sehen, wie viel sauberer, lesbarer und effizienter Ihr Code werden kann.
Sind Sie bereit, IronPDF in die Hand zu nehmen? Sie können mit unserem30-tägige kostenlose Testversion von IronPDF. Außerdem ist die Nutzung für Entwicklungszwecke völlig kostenlos, so dass Sie wirklich sehen können, was in ihm steckt. Und wenn Ihnen gefällt, was Sie sehen, beginnt IronPDF bereits ab einem Preis von$749 für IronPDF-Lizenzdetails Wenn Sie noch mehr Geld sparen möchten, sollten Sie sich daskaufoptionen für die Iron Software Suite wo Sie alle neun Iron Software Tools zum Preis von zwei erhalten. Fröhliches Kodieren!
9 .NET API-Produkte für Ihre Bürodokumente