Méthode de formation et contraintes de type d'énumération
L'objectif est de créer une fonction générique, d'étendre la fonction
et permet la valeur par défaut lorsque vous ne pouvez pas trouver la valeur de correspondance de la correspondance. Cette fonction ne doit pas être distinguée par le cas.
Enum.Parse
Cependant, lorsque vous essayez d'utiliser la fonction de définition de code suivante:
Je rencontrerai une erreur, soulignant que la contrainte ne peut pas être une classe spéciale (System.Enum).
<code class="language-csharp">public static T GetEnumFromString<T>(string value, T defaultValue) where T : Enum { // 实现... }</code>
Solution:
Afin de résoudre cette erreur et de permettre l'utilisation d'énumérations génériques, la contrainte peut être modifiée:
La contrainte après cette mise à jour garantit que T est une structure et prend également en charge l'interface iconvertible, qui est implémentée par énumération.
<code class="language-csharp">public static T GetEnumFromString<T>(string value, T defaultValue) where T : struct, IConvertible</code>
Le code modifié suivant démontre l'amélioration de l'amélioration:
Cette méthode accepte désormais les types d'énumération génériques et est complètement sûr, garantissant que seules les valeurs d'énumération efficaces sont renvoyées. L'utilisation degarantit l'exactitude de la culture croisée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!