L'énumération des méthodes d'extension
Dans vs2008, est-il possible d'écrire une extension des méthodes qui s'appliquerait à toute énumération.
Je sais que vous pouvez écrire les méthodes d'extension à l'égard d'une énumération, mais je veux être en mesure à chaque énumération en utilisant une seule méthode d'extension. Est-ce possible?
Vous devez vous connecter pour publier un commentaire.
Oui, juste le code par rapport à la base
Enum
type, comme par exempleLe bas-côté est que vous allez probablement finir par faire certaines choses désagréables, comme trouver le vrai type de base à l'aide de
Enum.GetUnderlyingType
, lancer, et d'aller vers le bas des branches différentes selon le type de base de l'enum est, mais vous pouvez trouver quelques bonnes utilisations (par exemple, nous avonsIsOneOf
etIsCombinationOf
méthodes qui s'appliquent à tous les énumérations).PS: n'oubliez pas lors de l'écriture de la méthode qui, bien que mal avisé, vous pouvez utiliser
float
etdouble
que les types de base pour les énumérations, de sorte que vous aurez besoin de quelques cas particuliers pour les personnes ainsi que les valeurs non signées.Oui, vous le pouvez. La cible extenstion est de type
Enum
. En C#, ce serait fait comme:ou comme ça en VB:
Pour info Voici un excellent exemple d'un Enum Extension de la méthode que j'ai été en mesure d'utiliser. Il met en œuvre un casse TryParse() fonction pour les enums:
Que vous pouvez l'utiliser de la manière suivante:
Voici les deux sites que j'ai visité pour aider à venir avec ce code:
Insensible à la casse TryParse pour les Enums
Les méthodes d'Extension pour les Enums
Voici un autre exemple, également plus agréable à mon humble avis, que d'avoir à créer et initialiser une variable temp.
default(TestEnum)
, mais celui qui est anonyme et immédiatement en place pour la collecte des ordures. Il est intéressant de souligner que les méthodes d'extension ne fonctionnent tout simplement pas sans une instance de ce qui est étendu, donc la plus proche que nous pouvons obtenir est d'instancier le Type de l'enum lui-même et d'avoir une méthode d'extension hors de ce type. Voir stackoverflow.com/questions/2422113/... pour une intéressante voie de l'accomplissement de cette.Vous pouvez également mettre en œuvre la méthode de conversion comme suit:
Voici un exemple d'utilisation:
Enum
implémenteIConvertible
de toute façon.Il est parfois nécessaire de convertir à partir d'un enum à l'autre, en fonction du nom ou de la valeur de l'enum. Voici comment on peut le faire très bien avec les méthodes d'extension:
Un autre exemple de faire de la Enum extension - mais cette fois il retourne à l'entrée d'un type enum.
Exemple d'utilisation: