EDIT: Ini sekarang tayang dalam versi 0.0.0.2 dari UnconstrainedMelody.
(Seperti yang diminta di posting blog saya tentang kendala enum . Saya telah menyertakan fakta dasar di bawah ini demi jawaban yang berdiri sendiri.)
Solusi terbaik adalah menunggu saya memasukkannya ke dalam UnconstrainedMelody 1 . Ini adalah pustaka yang mengambil kode C # dengan batasan "palsu" seperti
where T : struct, IEnumConstraint
dan mengubahnya menjadi
where T : struct, System.Enum
melalui langkah postbuild.
Seharusnya tidak terlalu sulit untuk menulis IsSet
... meskipun melayani bendera berbasis Int64
dan UInt64
berbasis bisa menjadi bagian yang sulit. (Saya mencium beberapa metode pembantu yang akan datang, pada dasarnya memungkinkan saya untuk memperlakukan setiap flag enum seolah-olah itu memiliki tipe dasar UInt64
.)
Perilaku apa yang Anda inginkan jika dipanggil
tester.IsSet(MyFlags.A | MyFlags.C)
? Haruskah itu memeriksa bahwa semua bendera yang ditentukan disetel? Itulah harapan saya.
Saya akan mencoba melakukan ini dalam perjalanan pulang malam ini ... Saya berharap mendapatkan kilasan cepat tentang metode enum yang berguna untuk membuat perpustakaan mencapai standar yang dapat digunakan dengan cepat, lalu bersantai sedikit.
EDIT: Omong IsSet
-omong, saya tidak yakin tentang nama. Pilihan:
- Termasuk
- Mengandung
- HasFlag (atau HasFlags)
- IsSet (ini tentu saja merupakan pilihan)
Pikiran diterima. Aku yakin itu akan memakan waktu sebelum apapun menjadi batu ...
1 atau kirimkan sebagai tambalan, tentu saja ...