175 votes

Comment ajouter des méthodes d'extension aux Enums

J'ai ce code Enum :

enum Duration { Day, Week, Month };

Puis-je ajouter une méthode d'extension pour cette Enum ?

8voto

Tim Schmelter Points 163781

Vous pouvez créer une extension pour n'importe quoi, même object (bien que ce soit non considéré comme une meilleure pratique ). Comprenez une méthode d'extension comme une public static méthode. Vous pouvez utiliser le type de paramètre de votre choix pour les méthodes.

public static class DurationExtensions
{
  public static int CalculateDistanceBetween(this Duration first, Duration last)
  {
    //Do something here
  }
}

5voto

LukeHennerley Points 3980

Voir MSDN .

public static class Extensions
{
  public static string SomeMethod(this Duration enumValue)
  {
    //Do something here
    return enumValue.ToString("D"); 
  }
}

1voto

simonmau Points 49

Nous venons de réaliser une extension enum pour c# https://github.com/simonmau/enum_ext

C'est juste une implémentation pour le typeafeenum, mais cela fonctionne très bien et nous avons créé un paquet pour le partager - amusez-vous avec.

public sealed class Weekday : TypeSafeNameEnum<Weekday, int>
{
    public static readonly Weekday Monday = new Weekday(1, "--Monday--");
    public static readonly Weekday Tuesday = new Weekday(2, "--Tuesday--");
    public static readonly Weekday Wednesday = new Weekday(3, "--Wednesday--");
    ....

    private Weekday(int id, string name) : base(id, name)
    {
    }

    public string AppendName(string input)
    {
        return $"{Name} {input}";
    }
}

Je sais que l'exemple est plutôt inutile, mais vous voyez l'idée ;)

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X