En essayant d'analyser un drapeau enum à chaîne

J'ai une classe "licence" qui est une collection de tout un tas d'enum drapeaux comme ceci:

Public class License
{
    UsageType Usage { get; set; }
    PlatformType Platform { get; set; }

    public enum UsageType { read = 1, write = 2, wipe = 4, all = 7 }
    public enum PlatformType { windows = 1, linux = 2, ios = 4, all = 7 }

    etc...
}

Le point est que les différents indicateurs de la même catégorie peuvent être OU avais-les ensemble pour former un profil de ce que l'utilisateur peut faire avec de ladite licence. Maintenant, je vais essayer d'afficher les valeurs de "l'Utilisation" et "Plate-forme" de l'homme de manière conviviale ainsi, si par exemple l'Utilisation de == UsageType.lecture | UsageType.écrire alors il doit être analysé à "lire, écrire".

Je l'ai fait avec succès avec un seul type enum en testant la valeur de chaque indicateur, et en ajoutant enumitem.ToString() pour chaque indicateur, il a une chaîne de caractères. Depuis j'ai beaucoup de ces énumérations et des valeurs bien, j'aimerais venir avec une approche plus générique.

Je suis venu avec ce (ci-dessous), mais depuis que je ne suis pas très familier avec le modèle des fonctions en c# donc je ne sais pas pourquoi cela ne fonctionne pas, mais au moins, il doit illustrer ce que je veux dire:

private string parseEnum<T>(T value)
{
    string ret = "";
    foreach (var ei in (T[])Enum.GetValues(typeof(T)))
    {
        if (value.HasFlag(ei)) ret += ei.ToString() + ", ";
    }
    ret = ret.substring(0, ret.Length-1);
    return ret;
}

C'est dire que T ne contient pas une définition pour "HasFlag" mais comment pourrait-il maintenant que si il ne sait pas ce que T est?

InformationsquelleAutor user81993 | 2014-10-01