C# Extending all [Flag] enums? -


  सार्वजनिक स्टेटिक बूल प्राप्त करें (यह इवेंटफ़्लैग झंडे, इवेंटफ़्लैग फ़्लैग) {वापसी (झंडे और ध्वज)! = 0); } सार्वजनिक स्थिर शून्य सेट (यह ईवेंटफ़्लैग झंडे, ईवेंटफ़्लैग ध्वज, बूल मान) {if (value) flags | = flag; अन्य झंडे & amp; = ~ झंडा; }   

मूल रूप से मैं ऐसा किसी भी [फ्लैग] एन्यूएम के लिए करना चाहता हूं, उदाहरण के लिए

  [ध्वज] सार्वजनिक एंमा फ्लैगएन [कोई नहीं = 0x0000, UseSkill = 0x0001}    

आप वास्तव में चाहते हैं एक सामान्य विधि है एक enum बाधा के साथ हालांकि, सी # की अनुमति नहीं है।

सौभाग्य से, CLR करता है इसे अनुमति देते हैं, और एक छोटे से हैबरी के साथ आप इस तरह अच्छे होने के लिए एक पुस्तकालय का उपयोग कर सकते हैं - हालांकि मुझे चाहिए इंगित करें कि आपका सेट विधि वर्तमान में वास्तव में कुछ भी नहीं करती है - आपको इसे कंप्यूटिंग के बाद मान देना चाहिए

मेरे पास एक है ठीक इसी प्रकार की चीज़ के लिए लाइब्रेरी जिसे आप देखना चाह सकते हैं: ध्यान दें कि यहां तक ​​कि हैकिंग के साथ, बाध्यता संकलित समय पर लागू नहीं कर सकता है कि आप वास्तव में एक झंडे एन्यूएम पर कॉल कर रहे हैं और कुछ अन्य एन्यूम नहीं है (मैं हालांकि निष्पादन-समय की जांच करता हूं।)

आप जो भी हो उसके बाद के लिए, मैं सुझाव देता हूं कि आप क्लास को देखें- खासकर या , HasAny < / कोड> और HasAll विधियां।

Comments