Mam następujące flagi ENUM:C# wyliczenia - Sprawdź Flagi przed maską
[Flags]
private enum MemoryProtection: uint
{
None = 0x000,
NoAccess = 0x001,
ReadOnly = 0x002,
ReadWrite = 0x004,
WriteCopy = 0x008,
Execute = 0x010,
ExecuteRead = 0x020,
ExecuteReadWrite = 0x040,
ExecuteWriteCopy = 0x080,
Guard = 0x100,
NoCache = 0x200,
WriteCombine = 0x400,
Readable = (ReadOnly | ReadWrite | ExecuteRead | ExecuteReadWrite),
Writable = (ReadWrite | WriteCopy | ExecuteReadWrite | ExecuteWriteCopy)
}
teraz mam instancji enum, że muszę sprawdzić, czy jest czytelny. Jeśli używam następujący kod:
myMemoryProtection.HasFlag(MemoryProtection.Readable)
zawsze zwraca fałsz w moim przypadku, ponieważ myślę HasFlag sprawdzić czy posiada ono każdą flagę. Potrzebuję czegoś eleganckiego, aby tego uniknąć:
myMemoryProtection.HasFlag(MemoryProtection.ReadOnly) ||
myMemoryProtection.HasFlag(MemoryProtection.ReadWrite) ||
myMemoryProtection.HasFlag(MemoryProtection.ExecuteRead) ||
myMemoryProtection.HasFlag(MemoryProtection.ExecuteReadWrite)
Jak mogę to zrobić?
Wymaga .NET 4.0 lub nowszy – linquize