में वैरिएबल जेनेरिक रिटर्न टाइप क्या कोई विधि किसी विधि से कई सामान्य प्रकारों में से किसी एक को वापस करने का कोई तरीका है? उदाहरण के लिए, मैं निम्नलिखित है:सी #
public static T ParseAttributeValue<T>(this XElement element, string attribute)
{
if(typeof(T) == typeof(Int32))
{
return Int32.Parse(element.Attribute(attribute).Value);
}
if(typeof(T) == typeof(Double))
{
return Double.Parse(element.Attribute(attribute).Value);
}
if(typeof(T) == typeof(String))
{
return element.Attribute(attribute).Value;
}
if(typeof(T) == typeof(ItemLookupType))
{
return Enum.Parse(typeof(T), element.Attribute(attribute).Value);
}
}
(यह, केवल एक बहुत त्वरित mockup है मुझे पता है कि किसी भी उत्पादन कोड अशक्त चेकों आदि में काफी अधिक गहन करने की आवश्यकता होगी हूँ ...)
लेकिन संकलक इसे पसंद नहीं करते हैं, शिकायत करते हैं कि Int32
को स्पष्ट रूप से T
में परिवर्तित नहीं किया जा सकता है (यह किसी भी कलाकार के साथ काम नहीं करता है)। मैं समझ सकता हूँ। संकलन समय पर यह जानने का कोई तरीका नहीं है कि T
क्या है, लेकिन मैं इसे पहले से जांच रहा हूं। क्या वैसे भी मैं यह काम कर सकता हूं?
नहीं, ' 'केवल टाइप पैरामीटर है। आप ब्रैकेट के बिना प्रकार का उपयोग करते हैं। –
Femaref
@ फेमेरेफ - अच्छा बिंदु। प्रश्न वापस ले लिया गया। –
यदि आप ऑब्जेक्ट को ऑब्जेक्ट के रूप में संग्रहीत करते हैं, तो आप इसे कास्ट कर सकते हैं। यह भी संभव है कि फ़ंक्शन को गतिशील के रूप में टाइप करने से आप बिना कलाकार के ऐसा करने में मदद कर सकते हैं। – MrWednesday