CHỈNH SỬA: Tính năng này hiện đã có trong phiên bản 0.0.0.2 của UnconstrainedMelody.
(Như đã yêu cầu trong bài đăng trên blog của tôi về các ràng buộc enum . Tôi đã bao gồm các thông tin cơ bản bên dưới vì lợi ích của một câu trả lời độc lập.)
Giải pháp tốt nhất là đợi tôi đưa nó vào UnconstrainedMelody 1 . Đây là một thư viện lấy mã C # với các ràng buộc "giả" chẳng hạn như
where T : struct, IEnumConstraint
và biến nó thành
where T : struct, System.Enum
thông qua một bước xây dựng sau.
Nó không phải là quá khó khăn để ghi IsSet
... mặc dù phục vụ cho cả Int64
dựa trên vàUInt64
cờ dựa trên cờ dựa trên có thể là một phần khó khăn. (Tôi ngửi thấy một số phương pháp trợ giúp sắp ra mắt, về cơ bản cho phép tôi xử lý mọi cờ enum như thể nó có một loại cơ sở là UInt64
.)
Bạn muốn hành vi sẽ như thế nào nếu bạn gọi
tester.IsSet(MyFlags.A | MyFlags.C)
? Nó có nên kiểm tra rằng tất cả các cờ được chỉ định đã được đặt chưa? Đó sẽ là kỳ vọng của tôi.
Tôi sẽ cố gắng thực hiện việc này trên đường về nhà tối nay ... Tôi hy vọng sẽ hiểu nhanh về các phương pháp enum hữu ích để nhanh chóng đưa thư viện đạt tiêu chuẩn có thể sử dụng được, sau đó thư giãn một chút.
CHỈNH SỬA: Nhân tiện, tôi không chắc về IsSet
cái tên. Các tùy chọn:
- Bao gồm
- Chứa đựng
- HasFlag (hoặc HasFlags)
- IsSet (chắc chắn là một tùy chọn)
Suy nghĩ hoan nghênh. Tôi chắc chắn rằng sẽ còn một thời gian nữa trước khi mọi thứ trở nên thành đá ...
1 hoặc gửi nó dưới dạng bản vá, tất nhiên ...