ho creato un metodo di estensione in quanto tale ..Controllare se esclusivamente solo questi flag impostati nella enumerazione
public static bool AllFlagsSet<T>(this T input, params T[] values) where T : struct, IConvertible
{
bool allSet = true;
int enumVal = input.ToInt32(null);
foreach (T itm in values)
{
int val = itm.ToInt32(null);
if (!((enumVal & val) == val))
{
allSet = false;
break;
}
}
return allSet;
}
Quali grandi opere per le finalità di cui avevo bisogno, ma ora ho un obbligo di creare un metodo con il stessa firma che controlla se sono stati impostati solo questi valori.
Fondamentalmente qualcosa del genere.
public static bool OnlyTheseFlagsSet<T>(this T input, params T[] values) where T : struct, IConvertible
{
}
L'unico modo che posso pensare di fare questo è quello di ottenere tutti i valori di enumerazione disponibili controllo che sono impostati e confermando che solo i due non siano state.
C'è un altro modo per risolvere questo problema utilizzando una sorta di operazione bit a bit?
È questo un compito ?? E perché il vincolo di T è una struct e non un enum ?? – LightStriker
lol, beh, questo è imbarazzante. No, solo non avere ancora una solida conoscenza delle operazioni bit a bit ... Questo è un vero requisito –
Provare a vincolarlo a Enum e vedere cosa succede. ;-p –