Ce que je veux faire, c'est quelque chose comme ceci: j'ai des énumérations avec des valeurs marquées combinées.
public static class EnumExtension
{
public static bool IsSet<T>( this T input, T matchTo )
where T:enum //the constraint I want that doesn't exist in C#3
{
return (input & matchTo) != 0;
}
}
Alors je pourrais faire:
MyEnum tester = MyEnum.FlagA | MyEnum.FlagB
if( tester.IsSet( MyEnum.FlagA ) )
//act on flag a
Malheureusement, le générique de C # où les contraintes n'ont aucune restriction d'énumération, seulement class et struct. C # ne voit pas les énumérations comme des structures (même s'il s'agit de types valeur), je ne peux donc pas ajouter de types d'extension comme celui-ci.
Quelqu'un connaît-il une solution de contournement?