उदाहरण विधि कॉलिंग वैसे भी मुक्केबाजी की आवश्यकता होगी, इसलिए, जब से तुम, Enum
को विवश नहीं कर सकते सिर्फ जेनरिक का परित्याग और Enum
का उपयोग करें। उदाहरण के लिए, के बजाय:
void Something(TEnum enumValue, TEnum flags)
{
if (enumValue.HasFlags(flags))
//do something ...
}
यह करें:
void Something(Enum enumValue, Enum flags)
{
if (enumValue.HasFlags(flags))
//do something ...
}
एक सामान्य विधि में, आप इस तरह अपने लक्ष्य को प्राप्त कर सकते हैं:
void Something(TEnum enumValue, TEnum flags)
{
Enum castValue = (Enum)(object)enumValue;
Enum castFlags = (Enum)(object)flags;
if (castValue.HasFlags(castFlags))
//do something ...
}
इस क्रम में एक अपवाद फेंक होगा यदि आप विधि को उस मान प्रकार से कॉल करते हैं जो enum नहीं है। ,
Enum castValue = (Enum)(ValueType)enumValue;
संक्षेप में आप नहीं कर सकते: आप के बाद से प्रकार पैरामीटर एक मान प्रकार का प्रतिनिधित्व करने के लिए जाना जाता है,
ValueType
बजायobject
के माध्यम से डाली सकता है। बाधाएं सामान्य मानकों पर विशेषताओं पर विचार नहीं करती हैं। आपको प्रतिबिंब के माध्यम से इसे लागू करना होगा। –टाइप पैरामीटर 'टी' से शुरू होना चाहिए; आपको 'जेनेरिकएनम' को 'तेनम' में बदलना चाहिए। – SLaks
क्या आप एक उदाहरण @ एम। बाबाकॉक दे सकते हैं? और विधिवत उल्लेख किया, @SLaks – DevDave