पढ़ना यह , मुझे पता चला यह संभव था एक विधि यह एक सामान्य विधि बनाकर कई प्रकार के पैरामीटर स्वीकार करने की अनुमति। उदाहरण में, निम्नलिखित कोड का उपयोग "U" सुनिश्चित करने के लिए एक प्रकार की बाधा के साथ किया जाता है IEnumerable<T>
।
public T DoSomething<U, T>(U arg) where U : IEnumerable<T>
{
return arg.First();
}
मुझे कुछ और कोड मिले जिन्होंने कई प्रकार की बाधाओं को जोड़ने की अनुमति दी, जैसे:
public void test<T>(string a, T arg) where T: ParentClass, ChildClass
{
//do something
}
हालाँकि, यह कोड लागू होता arg
है जो एक प्रकार का ParentClass
और दोनों होना चाहिए ChildClass
। मैं यह कहना चाहता हूं कि arg एक प्रकार का ParentClass
या ChildClass
निम्नलिखित तरीके से हो सकता है:
public void test<T>(string a, T arg) where T: string OR Exception
{
//do something
}
आपकी मदद हमेशा की तरह सराहना की है!
where T : string
, जैसा string
कि एक सील वर्ग है। केवल उपयोगी चीज जो आप कर सकते हैं , नीचे दिए गए अपने उत्तर में @ Botz3000 द्वारा समझाया गया है string
और के लिए ओवरलोड को परिभाषित कर रहा है T : Exception
।
arg
जिन तरीकों से कॉल कर सकते हैं, वे केवल object
उसी के द्वारा परिभाषित होते हैं - तो क्यों न केवल चित्र से जेनेरिक को हटा दें और किस प्रकार का बनाएं arg
object
? आप क्या हासिल कर रहे हैं?