Une itération à travers une énumération dans Silverlight?
Dans .Net, il est possible d'itérer à travers une énumération en utilisant
System.Enum.GetNames(typeof(MyEnum))
ou
System.Enum.GetValues(typeof(MyEnum))
Dans Silverlight 3 toutefois, le protocole Enum.Getnames a et Enum.GetValues ne sont pas définis. Quelqu'un sait-il une alternative?
- C'est ridicule que ce n'est pas dans le cadre. La taille du téléchargement est pas une excuse à la torture, les devs.
- si quelqu'un a besoin, plus précisément, GetEnumValues() et GetEnumNames(); j'ai mis en œuvre (en fonction de la réponse par ptoinson et Shimmy ci-dessous) comme une réponse à la question suivante: stackoverflow.com/questions/7062208/... , et je pense qu'ils sont l'équivalent de l'ordinaire (mais non Silverlight) .NET des fonctions du même nom.
Vous devez vous connecter pour publier un commentaire.
Ou peut-être fortement typés à l'aide de linq, comme ceci:
where T : struct,IConvertible
dans la définition de la méthode pour se rapprocher de restreindreT
pour les énumérations seulement.J'ai trouvé comment faire cela sans faire d'hypothèses sur les enum, imitant les fonctions dans les .Net:
Je n'ai pas essayé, mais la réflexion Api devrait fonctionner.
Je trouve que c'est le même que dans le .NET Compact Framework. Si nous faisons l'hypothèse que vos valeurs enum commencent à 0 et utiliser toutes les valeurs jusqu'à ce que leur portée est plus le code suivant devrait fonctionner.
Évidemment, vous pourriez modifier le code de retour de l'énumération des noms ou pour s'adapter à différents modèles par exemple au niveau du bit valeurs.
Voici une autre version de la méthode qui retourne un
IList<EnumType>
.++iLoop;
devientiLoop = iLoop << 1;
.((EnumType)GetArrayValues[i]).ToString()
ou dans VB.NETCType(GetArrayValues(i), EnumType).ToString()
? Ma réponse stipule que le code ci-dessus est juste un exemple simple et peut facilement être ré-écrit pour le retour d'un autre type ou d'un match, un autre enum modèle.Type CurrentEnumType;
a été donné. Et je suis d'accord que vous avez suffisamment précisé dans la suite du texte, c'est juste que c'était une source de confusion pour moi (qui n'était pas familier avec la valeur de retour; un Tableau contenant quels que soient les types enum sont) parce que j'avais supposé que le fait d'avoir le même nom signifiait qu'il a renvoyé la même chose que la norme .NET framework méthode.IList<EnumType>
.MyClass.GetEnumValues
vsEnum.GetValues
. Il n'y a rien sur cette méthode que les sauts de lignes directrices de codage. Je ne vois vraiment pas comment un programmeur peut être confondu par ce que vous pouvez lire le code source. Plus important encore, si vous ne l'aimez pas, alors ne l'utilisez pas!