using IronPdf;
using System;
public static class StringExtensions
{
// Extension method to convert HTML string to PDF
public static void ConvertHtmlToPdf(this string htmlContent, string filePath)
{
// Initialize the ChromePdfRenderer
var renderer = new ChromePdfRenderer();
// Render the HTML string to a PDF
var pdf = renderer.RenderHtmlAsPdf(htmlContent);
// Save the PDF to the specified file path
pdf.SaveAs(filePath);
}
}
// Example usage of the extension method
public class Program
{
public static void Main()
{
// Example HTML content
string html = "<html><body><h1>Welcome to IronPDF</h1><p>Generate PDFs in .NET easily.</p></body></html>";
// Convert HTML to PDF and save it
html.ConvertHtmlToPdf("WelcomePDF.pdf");
}
}
Méthodes d'extension C# (Comment ça marche pour les développeurs)
Regan Pun
août 15, 2024
Partager:
Les méthodes d'extension sont une fonctionnalité puissante de C# qui vous permet d'ajouter de nouvelles fonctionnalités aux types existants sans modifier leur code source. Ils peuvent être extrêmement utiles pour rendre votre code plus lisible et plus facile à maintenir. Dans ce guide, nous explorerons les bases des méthodes d'extension et comment les implémenter.
Qu'est-ce qu'une méthode d'extension ?
Les méthodes d'extension sont des méthodes statiques spéciales qui peuvent être appelées comme s'il s'agissait de méthodes d'instance d'un type existant. Ils constituent un moyen pratique d'ajouter de nouvelles méthodes à une classe existante sans modifier le code source original ni hériter de la classe.
Pour créer une méthode d'extension, vous devez définir une méthode statique dans une classe statique. Le premier paramètre de la méthode doit être le type que vous souhaitez étendre, précédé du mot-clé this. Ce mot-clé spécial indique au compilateur C# qu'il s'agit d'une méthode d'extension.
Mise en œuvre de méthodes d'extension dans C# ;
Maintenant que nous savons ce que sont les méthodes d'extension, mettons-en une en œuvre. Imaginez que vous ayez une chaîne de caractères que vous souhaitez inverser. Au lieu d'écrire une fonction séparée pour cela, vous pouvez créer une méthode d'extension pour la classe string.
Tout d'abord, créons une nouvelle classe statique appelée StringExtensions. Le nom de la classe n'est pas important, mais il est courant d'utiliser le nom du type étendu suivi de "Extensions". À l'intérieur de cette classe, nous définirons une méthode statique appelée 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
Dans cet exemple, nous avons créé une méthode publique statique de type chaîne de caractères appelée Reverse avec un seul paramètre. Le mot-clé this avant le type string indique qu'il s'agit d'une méthode d'extension pour la classe string.
Maintenant, voyons comment utiliser cette nouvelle méthode d'extension dans notre classe Program :
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
Remarquez que nous n'avons pas eu besoin de créer une instance de la classe StringExtensions. Au lieu de cela, nous avons utilisé la méthode Reverse directement sur l'instance de la chaîne comme s'il s'agissait d'une méthode d'instance.
Syntaxe de la méthode d'extension
Les méthodes d'extension ressemblent aux méthodes d'instance et se comportent comme elles, mais il y a quelques différences importantes à garder à l'esprit :
Les méthodes d'extension ne peuvent pas accéder aux membres privés du type étendu
Ils ne participent également pas à l'héritage ou au polymorphisme
Vous ne pouvez pas remplacer une méthode existante avec une méthode d'extension
Si le type étendu possède une méthode ayant la même signature qu'une méthode d'extension, la méthode d'instance aura toujours la priorité. Les méthodes d'extension ne sont appelées que lorsqu'il n'existe pas de méthode d'instance correspondante.
Exemples concrets de méthodes de vulgarisation
Maintenant que nous comprenons les bases des méthodes d'extension en C#, examinons quelques exemples concrets.
Méthode d'extension des chaînes de caractères Nombre de mots
Imaginez que vous souhaitiez compter le nombre de mots dans une chaîne de caractères. Vous pouvez créer une méthode d'extension WordCount pour la classe string :
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
Maintenant, vous pouvez facilement compter le nombre de mots dans une chaîne de caractères comme celle-ci :
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.
IEnumerable Extension Method Median
Supposons que vous disposiez d'une collection de nombres et que vous souhaitiez calculer la valeur médiane. Vous pouvez créer une méthode d'extension pour IEnumerable:
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
Avec cette méthode d'extension, vous pouvez facilement trouver la valeur médiane d'une collection :
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.
Méthode d'extension DateTime StartOfWeek
Supposons que vous souhaitiez trouver le début de la semaine pour une date donnée. Vous pouvez créer une méthode d'extension pour la structure DateTime :
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
Désormais, vous pouvez facilement trouver le début de la semaine pour n'importe quelle date :
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
Générer des PDF avec IronPDF et les méthodes d'extension
Dans cette section, nous allons introduire IronPDF, notre bibliothèque de premier plan pour générer et travailler avec des fichiers PDF en C#. Nous verrons également comment nous pouvons exploiter les méthodes d'extension pour créer une expérience plus transparente et plus intuitive lorsque nous travaillons avec cette bibliothèque.
IronPDF convertit le HTML en PDF de manière à préserver la mise en page et le style du contenu tel qu'il apparaîtrait dans un navigateur web. La bibliothèque peut travailler avec du HTML brut provenant de fichiers, d'URL et de chaînes de caractères. Voici un aperçu rapide :
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
Création d'un PDF simple
Avant de plonger dans les méthodes d'extension, voyons comment créer un simple PDF à partir de HTML en utilisant IronPDF :
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
Cet extrait de code crée un PDF avec le texte "Hello, World"!"et l'enregistre dans un fichier nommé "HelloWorld.PDF".
Méthodes d'extension pour IronPDF
Voyons maintenant comment nous pouvons utiliser les méthodes d'extension pour améliorer les fonctionnalités d'IronPDF et faciliter son utilisation. Par exemple, nous pouvons créer une méthode d'extension qui prend une instance de la classe string et génère directement un PDF à partir de celle-ci.
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
Avec cette méthode d'extension, nous pouvons maintenant générer un PDF directement à partir d'une chaîne de caractères :
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")
Générer des PDF à partir d'URL
Une autre méthode d'extension utile que nous pouvons créer est celle qui génère un PDF à partir d'une URL. Nous pouvons étendre la classe Uri pour y parvenir :
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
Maintenant, nous pouvons facilement générer un PDF à partir d'une URL comme celle-ci :
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")
Conclusion
Et voilà - nous avons exploré le concept des méthodes d'extension en C#, appris comment les implémenter en utilisant des méthodes statiques et des classes statiques, et utilisé des exemples concrets pour différents types. De plus, nous avons introduit IronPDF, une bibliothèque pour générer et travailler avec des fichiers PDF en C#. Lorsque vous commencerez à utiliser les méthodes d'extension et IronPDF ensemble, vous verrez à quel point votre code peut devenir plus propre, plus lisible et plus efficace.
Prêt à mettre la main sur IronPDF ? Vous pouvez commencer avec notreessai gratuit d'IronPDF pendant 30 jours. C'est également totalement gratuit à utiliser à des fins de développement, ce qui vous permet de vraiment voir de quoi il est fait. Et si vous aimez ce que vous voyez, IronPDF commence à partir de$749 pour les détails de licence IronPDF Pour des économies encore plus importantes, consultez le siteoptions d'achat pour la Iron Software Suiteoù vous pouvez obtenir les neuf outils Iron Software pour le prix de deux. Bon codage!
Regan est diplômé de l'université de Reading, où il a obtenu une licence en ingénierie électronique. Avant de rejoindre Iron Software, il s'était concentré sur une seule tâche. Ce qu'il apprécie le plus chez Iron Software, c'est la diversité des tâches qu'il peut accomplir, qu'il s'agisse d'apporter une valeur ajoutée aux ventes, à l'assistance technique, au développement de produits ou à la commercialisation. Il aime comprendre comment les développeurs utilisent la bibliothèque d'Iron Software et utiliser ces connaissances pour améliorer continuellement la documentation et développer les produits.
< PRÉCÉDENT Try/Catch en C# (Comment ça marche pour les développeurs)
SUIVANT > Utilisation de C# (Comment ça marche pour les développeurs)
Des millions d'ingénieurs dans le monde entier lui font confiance
Réservez une démo en direct gratuite
Réservez une démonstration personnelle de 30 minutes.
Pas de contrat, pas de détails de carte, pas d'engagements.
Voici ce à quoi vous pouvez vous attendre :
Une démonstration en direct de notre produit et de ses principales fonctionnalités
Obtenez des recommandations de fonctionnalités spécifiques au projet
Toutes vos questions trouvent réponse pour vous assurer de disposer de toutes les informations dont vous avez besoin. (Aucun engagement de votre part.)
CHOISIR L'HEURE
VOS INFORMATIONS
Réservez votre démo en direct gratuite
Fiable par plus de 2 millions d'ingénieurs dans le monde entier