मैं वर्तमान में UnconstrainedMelody के लिए कुछ कोड लिख रहा हूं जिसमें enums के साथ सामान्य तरीके हैं।
अब, मेरे पास एक स्टैटिक क्लास है जिसमें विधियों का एक समूह है जो केवल "झंडे" एनम के साथ उपयोग करने के लिए है। मैं इसे एक अड़चन के रूप में नहीं जोड़ सकता ... इसलिए यह संभव है कि उन्हें अन्य एनम प्रकारों के साथ भी बुलाया जाएगा। उस मामले में मैं एक अपवाद फेंकना चाहूंगा, लेकिन मुझे यकीन नहीं है कि कौन सा फेंकना है।
बस इस ठोस बनाने के लिए, अगर मेरे पास कुछ ऐसा है:
// Returns a value with all bits set by any values
public static T GetBitMask<T>() where T : struct, IEnumConstraint
{
if (!IsFlags<T>()) // This method doesn't throw
{
throw new ???
}
// Normal work here
}
फेंकने के लिए सबसे अच्छा अपवाद क्या है? ArgumentException
तार्किक लगता है, लेकिन यह एक सामान्य तर्क के बजाय एक प्रकार का तर्क है, जो आसानी से चीजों को भ्रमित कर सकता है। क्या मुझे अपनी TypeArgumentException
कक्षा शुरू करनी चाहिए ? का उपयोग करें InvalidOperationException
? NotSupportedException
? और कुछ?
मैं चाहता हूँ बल्कि नहीं जब तक कि यह स्पष्ट रूप से करने के लिए सही बात है इस के लिए अपने ही अपवाद पैदा करते हैं।