Aller au contenu

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.

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);
}
}
Fenêtre de terminal
dotnet run
ID: 1, Nom: Laptop
ID: 100, Nom: Alice
  • On peut imposer plusieurs interfaces : where T : IInterface1, IInterface2.
  • L’interface peut être générique elle‑même.

List<T> – N’impose pas d’interface, mais Dictionary<TKey, TValue> utilise IEquatable<TKey> indirectement.
Voir documentation .NET sur les contraintes d’interface.