Rozważmy mam tę metodę rozszerzenia:sprawdzić, jeśli enum ma jakieś flagi wspólne
public static bool HasAnyFlagInCommon(this System.Enum type, Enum value)
{
var flags = value.ToString().Split(new string[] { ", " },
StringSplitOptions.None);
foreach (var flag in flags)
{
if (type.ToString() == flag)
return true;
}
return false;
}
a następującą sytuację:
[Flags]
enum Bla
{
A = 0,
B = 1,
C = 2,
D = 4
}
Bla foo = Bla.A | Bla.B;
Bla bar = Bla.A;
bar.HasAnyFlagInCommon(foo); //returns true
Chcę sprawdzić, jeśli foo ma jakieś flagi wspólnych z pasek, ale w metodzie rozszerzenia powinno być lepsze rozwiązanie tego zachowania.
Próbowałem też w ten sposób, ale zawsze zwraca true:
public static bool HasAnyFlagInCommon(this System.Enum type, Enum value)
{
var flags = Enum.GetValues(value.GetType()).Cast<Enum>()
.Where(item => value.HasFlag(item));
foreach (var flag in flags)
{
if (type == flag)
return true;
}
return false;
}
Dzięki, bardzo miło! – Erpel