where T IMyInterface (contrainte d'interface)
Contexte : La contrainte where T : IMyInterface exige que le paramètre de type implémente l’interface spécifiée. Cela permet d’appeler les membres de l’interface sur les instances de T. Plusieurs interfaces peuvent être combinées.
Exemple d’utilisation
Section intitulée « Exemple d’utilisation »using System;using System.Collections.Generic;
public interface IIdentifiable{ int Id { get; } string Nom { get; }}
public class Produit : IIdentifiable{ public int Id { get; set; } public string Nom { get; set; }}
public class Client : IIdentifiable{ public int Id { get; set; } public string Nom { get; set; }}
public class Afficheur<T> where T : IIdentifiable{ public void AfficherIdentite(T item) { Console.WriteLine($"ID: {item.Id}, Nom: {item.Nom}"); }}
class Program{ static void Main() { var produit = new Produit { Id = 1, Nom = "Laptop" }; var client = new Client { Id = 100, Nom = "Alice" };
var afficheur = new Afficheur<IIdentifiable>(); afficheur.AfficherIdentite(produit); afficheur.AfficherIdentite(client); }}Sortie console
Section intitulée « Sortie console »dotnet runID: 1, Nom: LaptopID: 100, Nom: AliceRemarques importantes
Section intitulée « Remarques importantes »- On peut imposer plusieurs interfaces :
where T : IInterface1, IInterface2. - L’interface peut être générique elle‑même.
Exemple d’utilisation dans le monde réel
Section intitulée « Exemple d’utilisation dans le monde réel »List<T> – N’impose pas d’interface, mais Dictionary<TKey, TValue> utilise IEquatable<TKey> indirectement.
Voir documentation .NET sur les contraintes d’interface.