मेरे पास एक विधि है जो पैरामीटर के रूप में IList<T>
का उपयोग करती है। मुझे यह जांचने की ज़रूरत है कि T
ऑब्जेक्ट का प्रकार क्या है और इसके आधार पर कुछ करें। मैं T
मान का उपयोग करने की कोशिश कर रहा था, लेकिन संकलक इसे अनुमति नहीं देता है। मेरा समाधान निम्न है:सी # जेनिक्स और टाइपिंग
private static string BuildClause<T>(IList<T> clause)
{
if (clause.Count > 0)
{
if (clause[0] is int || clause[0] is decimal)
{
//do something
}
else if (clause[0] is String)
{
//do something else
}
else if (...) //etc for all the types
else
{
throw new ApplicationException("Invalid type");
}
}
}
ऐसा करने का एक बेहतर तरीका होना चाहिए। क्या कोई तरीका है कि मैं T
के प्रकार की जांच कर सकता हूं जो कि पास हो गया है और फिर switch
कथन का उपयोग करें?
मैं व्यक्तिगत रूप से पता है कि आप प्रत्येक डेटा प्रकार के लिए विशेष कर रहे हैं चाहते हैं। यदि आप मोटे तौर पर प्रत्येक डेटा प्रकार के लिए एक ही रूपांतरण कर रहे हैं, तो विभिन्न प्रकारों को एक सामान्य इंटरफ़ेस में मैप करना और उस इंटरफ़ेस पर काम करना आसान हो सकता है। – Juliet