Comment : créer une méthode pour une énumération (Guide de programmation C#)
Vous pouvez utiliser des méthodes d'extension pour ajouter les fonctionnalités spécifique à un type d'enum particulier.
Exemple
Dans l'exemple suivant, l'énumération Grades représente les notes possibles sous forme de lettre qu'un étudiant peut obtenir dans une classe. Une méthode d'extension nommée Passing est ajoutée au type Grades afin que chaque instance de ce type sache maintenant si cela représente une note d'admission ou pas.
using System;
using System.Collections.Generic;
using System.Text;
using System.Linq;
namespace EnumExtension
{
// Define an extension method in a non-nested static class.
public static class Extensions
{
public static Grades minPassing = Grades.D;
public static bool Passing(this Grades grade)
{
return grade >= minPassing;
}
}
public enum Grades { F = 0, D=1, C=2, B=3, A=4 };
class Program
{
static void Main(string[] args)
{
Grades g1 = Grades.D;
Grades g2 = Grades.F;
Console.WriteLine("First {0} a passing grade.", g1.Passing() ? "is" : "is not");
Console.WriteLine("Second {0} a passing grade.", g2.Passing() ? "is" : "is not");
Extensions.minPassing = Grades.C;
Console.WriteLine("\r\nRaising the bar!\r\n");
Console.WriteLine("First {0} a passing grade.", g1.Passing() ? "is" : "is not");
Console.WriteLine("Second {0} a passing grade.", g2.Passing() ? "is" : "is not");
}
}
}
/* Output:
First is a passing grade.
Second is not a passing grade.
Raising the bar!
First is not a passing grade.
Second is not a passing grade.
*/
Notez que la classe Extensions contient également une variable statique mise à jour dynamiquement et que la valeur de retour de la méthode d'extension reflète la valeur actuelle de cette variable. Cela montre qu'en arrière-plan les méthodes d'extension sont appelées directement sur la classe statique dans laquelle elles sont définies.
Compilation du code
Pour exécuter ce code, copiez-le et collez-le dans un projet d'application console Visual C# qui a été créé dans Visual Studio. Par défaut, ce projet cible la version 3.5 du .NET Framework et il possède une référence à System.Core.dll et une directive using pour System.Linq. Si une ou plusieurs de ces spécifications sont absentes du projet, vous pouvez les ajouter manuellement. Pour plus d'informations, consultez Comment : créer un projet LINQ.
Voir aussi
Référence
Méthodes d'extension (Guide de programmation C#)