Quello che voglio fare è qualcosa del genere: ho enumerazioni con valori contrassegnati combinati.
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;
}
}
Quindi potrei fare:
MyEnum tester = MyEnum.FlagA | MyEnum.FlagB
if( tester.IsSet( MyEnum.FlagA ) )
//act on flag a
Sfortunatamente, il generico di C # in cui i vincoli non hanno restrizioni di enum, solo classe e struttura. C # non vede le enumerazioni come strutture (anche se sono tipi di valore), quindi non posso aggiungere tipi di estensione come questo.
Qualcuno conosce una soluzione alternativa?