IRONSOFTWAREHOME
MISES À JOUR POUR LES DÉVELOPPEURS

C# Generics (Comment ça fonctionne pour les développeurs)

Jacob Mellor, Directeur technique @ Team Iron
Jacob Mellor
Updated: 19 juillet 2026

Les génériques C# introduisent un moyen de concevoir des classes, des méthodes, des interfaces et des délégués où le type de données qu'ils gèrent peut être spécifié en tant que paramètre. Ce concept, connu sous le nom de paramètre de type générique, permet la création de composants de code flexibles et réutilisables. En utilisant les génériques, vous pouvez maximiser la réutilisation du code, la sécurité des types et la performance. Par exemple, une classe générique peut être définie une fois mais instanciée avec différents types de données, offrant ainsi polyvalence et intégrité des types. Dans cet article, nous apprendrons les bases des Génériques C# et les fonctionnalités de la bibliothèque IronPDF pour la manipulation de PDF.

Les bases des classes génériques

Une classe générique en C# est un modèle pour créer une classe avec un espace réservé pour le type qu'elle contient ou sur lequel elle opère. Cet espace réservé, souvent noté T, représente un paramètre de type qui est spécifié lorsque la classe est instanciée. Nous pouvons créer des classes génériques avec un paramètre de type T pour gérer divers types de données. Les classes génériques sont particulièrement utiles pour les classes de collection, comme les listes, files d'attente et tables de hachage, car elles peuvent contenir n'importe quel type de données tout en garantissant la sécurité des types et en réduisant le besoin de conversion de type.

Exemple simple d'une classe générique

Considérons une classe générique nommée Boîte conçue pour stocker une valeur de n'importe quel type :

public class Box<t>
{
    private T data;

    public Box(T data)
    {
        this.data = data;
    }

    public T Data
    {
        get { return data; }
    }
}

Pour utiliser cette classe, vous créez une instance en spécifiant le type réel de T :

Box<int> integerBox = new Box<int>(123);
Box<string> stringBox = new Box<string>("Hello");

Ce code illustre comment une seule classe (Boîte) peut s'adapter pour stocker différents types de données (int, string), démontrant la puissance des génériques pour la réutilisation du code et la sécurité des types.

Implémentation des méthodes génériques

Les méthodes génériques sont similaires aux classes génériques mais sont définies avec des paramètres de type au niveau de la méthode. Cela permet de créer des méthodes pouvant opérer sur différents types tout en étant définies dans une classe non générique ou générique.

Exemple de méthode générique

Voici une méthode qui échange deux éléments dans un tableau de n'importe quel type :

public class Utility
{
    // Swaps two elements by reference using generics
    public static void Swap<t>(ref T lhs, ref T rhs)
    {
        T temp = lhs; // Store lhs in a temporary variable
        lhs = rhs;    // Assign rhs to lhs
        rhs = temp;   // Assign temp (original lhs) to rhs
    }
}

L'utilisation de la méthode ci-dessus peut se faire comme suit :

int a = 1, b = 2;
Utility.Swap<int>(ref a, ref b);

string first = "world", second = "hello";
Utility.Swap(ref first, ref second);

Exploration des interfaces et délégués génériques

Les interfaces et délégués génériques permettent de définir des contrats et des méthodes de rappel pouvant opérer sur n'importe quel type. Implémenter une interface générique ou utiliser un délégué générique dans votre classe ou méthode améliore la flexibilité et la réutilisation du code.

Exemple d'interface générique

Une interface de dépôt générique pour les opérations d'accès aux données pourrait ressembler à ceci :

public interface IRepository<t>
{
    void Add(T item);
    T GetById(int id);
    IEnumerable<t> GetAll();
}

Cette interface peut être implémentée par n'importe quelle classe pour gérer des types de données spécifiques, permettant des modèles d'accès aux données cohérents à travers différents types.

Exemple de délégué générique

Un délégué générique pourrait être utilisé pour définir un rappel sécurisé par type :

public delegate void Action<t>(T item);

Utilisation des collections génériques

Les classes de collection génériques, telles que List, Dictionary<TKey, TValue> et autres dans l'espace de noms System.Collections.Generic, offrent des collections efficaces et sécurisées par type pour stocker et manipuler les données de n'importe quel type spécifique. Ces collections sont supérieures à leurs homologues non génériques car elles éliminent le besoin de conversion de type et réduisent les erreurs d'exécution.

List<string> names = new List<string>();
names.Add("Alice");
names.Add("Bob");

Dictionary<int, string> keyValuePairs = new Dictionary<int, string>();
keyValuePairs.Add(1, "One");
keyValuePairs.Add(2, "Two");

Créer des types génériques personnalisés

Au-delà de l'utilisation de types génériques intégrés, vous pouvez créer les vôtres pour encapsuler des opérations courantes à travers différents types de données mais nécessitant d'être traités de manière spécifique au type. Cette approche est particulièrement utile pour construire des bibliothèques, des frameworks ou des utilitaires à utiliser avec divers types de données.

Exemple de type générique personnalisé

Considérons une classe générique Résultat qui encapsule les résultats d'opérations avec un indicateur de succès et un message optionnel :

public class Result<t>
{
    public bool Success { get; private set; }
    public T Data { get; private set; }
    public string Message { get; private set; }

    public Result(bool success, T data, string message = "")
    {
        Success = success;
        Data = data;
        Message = message;
    }
}

IronPDF : Bibliothèque PDF en C#

IronPDF est une bibliothèque complète conçue pour les développeurs .NET pour créer, éditer et extraire des documents PDF au sein de leurs applications. IronPDF aide à générer des PDF à partir de HTML, éditer des PDF existants, convertir des PDF en images, et bien plus. Bien que IronPDF lui-même ne soit pas basé sur des génériques, comprendre comment interagir avec cette bibliothèque dans un environnement C# peut grandement améliorer les capacités de gestion de documents de votre application.

Exemple de code : Utilisation du mot-clé virtual avec IronPDF

L'idée ici est de créer une méthode réutilisable pouvant générer un PDF à partir de n'importe quelle chaîne HTML donnée. Cette méthode sera générique, nous permettant de spécifier différents types de métadonnées ou configurations selon les besoins.

Tout d'abord, définissons une classe générique simple qui contiendra nos options de génération de PDF. À des fins de démonstration, cette classe sera basique, mais vous pouvez l'élargir avec plus de propriétés pour répondre à vos besoins.

public class PdfOptions<t>
{
    public T Metadata { get; set; }
    public string HtmlContent { get; set; }
}

Ensuite, créons une méthode statique qui génère un PDF avec IronPDF, en s'appuyant sur notre classe PdfOptions. Cette méthode prendra une instance de PdfOptions en paramètre, démontrant l'utilisation des génériques en action.

using IronPdf; // Make sure to include the necessary namespace for IronPDF

public static class PdfGenerator
{
    // Generates a PDF from provided HTML content and options
    public static void GeneratePdf<t>(PdfOptions<t> options)
    {
        // Initialize the IronPDF HtmlToPdf renderer
        var renderer = new ChromePdfRenderer();

        // Optional: Apply any renderer options here, for example, setting the paper size
        renderer.RenderingOptions.PaperSize = IronPdf.Rendering.PdfPaperSize.A4;

        // Generate the PDF from HTML content
        var pdfDocument = renderer.RenderHtmlAsPdf(options.HtmlContent);

        // Optional: Here, you can use options.Metadata in some way, depending on your generic type T
        // For simplicity, we're just printing the metadata to console if it's of type string
        if (options.Metadata is string metadataString)
        {
            Console.WriteLine($"Metadata: {metadataString}");
        }

        // Save the PDF to a file
        var fileName = $"GeneratedPdf_{DateTime.Now.Ticks}.pdf";
        pdfDocument.SaveAs(fileName);
        Console.WriteLine($"PDF generated and saved as {fileName}");
    }
}

Enfin, utilisons notre classe PdfGenerator pour générer un document PDF. Dans cet exemple, la propriété Metadata pourrait être une chaîne contenant un titre ou toute autre information que vous jugez pertinente.

class Program
{
    static void Main(string[] args)
    {
        // Set the license key for IronPDF if needed
        License.LicenseKey = "Your-License-Key-Here";

        // Create PDF options with HTML content and metadata
        var options = new PdfOptions<string>
        {
            HtmlContent = "<h1>Hello, World!</h1><p>This is a test PDF document generated from HTML.</p>",
            Metadata = "Test PDF Title"
        };

        // Generate the PDF using the specified options
        PdfGenerator.GeneratePdf(options);
    }
}

Cet exemple illustre les bases de l'intégration d'IronPDF avec les génériques C#, fournissant un moyen flexible de générer des PDF à partir de contenu HTML tout en permettant des métadonnées ou configurations personnalisables via la classe générique PdfOptions. Vous pouvez étoffer cela en ajoutant des options plus sophistiquées et des configurations de rendu selon les besoins de votre application.

Génériques C# (Comment cela fonctionne pour les développeurs) : Figure 1 - Exemple de sortie de code utilisant des génériques pour créer un document PDF à partir d'une chaîne HTML avec IronPDF

Conclusion

Les génériques C# sont un outil puissant pour développer du code de haute qualité, réutilisable et sécurisé par type. En comprenant et en appliquant des classes, méthodes, interfaces et délégués génériques, vous pouvez écrire du code plus adaptable et facile à maintenir. Les génériques permettent non seulement la réutilisation du code à travers différents types de données, mais garantissent également une vérification de type à la compilation, ce qui réduit les erreurs d'exécution et améliore la qualité globale du code. IronPDF propose un essai gratuit de ses outils de bibliothèque PDF, avec des coûts à partir de $999.

Jacob Mellor, Directeur technique @ Team Iron
Directeur technique

Jacob Mellor est directeur de la technologie chez Iron Software et un ingénieur visionnaire pionnier de la technologie C# PDF. En tant que développeur à l'origine de la base de code centrale d'Iron Software, il a façonné l'architecture des produits de l'entreprise depuis sa création, la transformant aux côtés du PDG Cameron Rimington en une entreprise de plus de 50 personnes au service de la NASA, de Tesla et d'agences gouvernementales mondiales.

...
Lire la suite

Articles connexes

Key in blue circle

Obtenez votre clé d'essai de 30 jours instantanément.

Your trial license will be sent to your email address

Aucune restriction. 100 % débloqué. Pas de carte bancaire.

OR
bullet_checkedAucune carte de crédit ou création de compte requiseAucune restriction. 100 % débloqué. Pas de carte bancaire.
  • Logo Aetna
  • Logo NASA
  • Logo GE
  • Logo Porsche
  • Logo USDA
  • Logo Qatar
Join Millions of Engineers who’ve tried Iron Suite
Réservez votre Démonstration en direct gratuite
Booking Badge

De confiance par des millions d'ingénieurs dans le monde entier

Logos des clients d'Iron Software
Obtenez Votre Consultation sans Engagement
Remplissez le formulaire ci-dessous ou envoyez un email à sales@ironsoftware.com
Vos informations seront toujours gardées confidentielles.
De confiance par des millions d'ingénieurs dans le monde entier
Logos des clients d'Iron Software
Obtenez votre clé d'essai 30 jours gratuitement.
Aucune carte de crédit ou création de compte requise
Bibliothèque C# NuGet pour PDF
Installer avec NuGet

Version : 2026.9

PM > Install-Package IronPdf
nuget.org/packages/IronPdf/
  1. Dans l'explorateur de solutions, faites un clic droit sur Références, Gestion des packages NuGet
  2. Sélectionnez Parcourir et recherchez « IronPDF »
  3. Sélectionnez le package et installez
C# PDF DLL
Télécharger DLL

Version : 2026.9

ou téléchargez l'installateur Windows ici.

  1. Téléchargez et décompressez IronPDF à un emplacement tel que ~/Libs dans votre répertoire de solution
  2. Dans l'explorateur de solutions Visual Studio, faites un clic droit sur Références. Sélectionnez Parcourir, « IronPDF.dll »

Licences à partir de 749 $