देखें मैं इस तरह एक स्थिति है ...दर्रा प्रकार गतिशील करने के लिए <T>
object myRoledata = List<Roles>() --> (some list or Ienumerable type)
अब मैं एक सामान्य विधि है जहाँ से List<T>
एक XML वस्तु बनाता है - कुछ इस तरह ..
public string GetXML<T>(object listdata)
{
List<T> objLists = (List<T>)Convert.ChangeType(listData, typeof(List<T>));
foreach(var obj in listdata)
{
//logic to create xml
}
}
अब इस विधि मैं इस तरह करना है चलाने के लिए:
string xml = GetXML<Roles>(myRoledata);
अब मुझे नहीं पता कि Type
मुझे GetXML
विधि में पारित करने के लिए आ सकता है। मेरे पास एक विधि है जो अलग-अलग Type
एस के लिए GetXML
पर कॉल करेगी। Roles
, Users
आदि
अब मैं Type
List<>
के भीतर इस
Type genericType = obj.GetType().GetGenericArguments()[0];
की तरह प्राप्त कर सकते हैं, लेकिन यह
string xml = GetXML<genericType>(myRoledata);
है जैसे कि यह पारित नहीं हो सकता वहाँ वैसे भी है, जिसमें मैं किसी भी genericTypes
को पारित कर सकते हैं है GetXML
विधि?
शायद आप इस सवाल में स्पष्ट करना चाहते हैं कि (संभवतः एकाधिक) प्रकार टी टी संकलित समय पर अज्ञात हैं या नहीं। यदि वे ज्ञात हैं तो Ulrik का जवाब समझ में आता है, यानी तर्क प्रकार को रोकना और बल देना (शायद कई ओवरलोड के साथ)। यदि यह ज्ञात नहीं है कि आपको कुछ रूपों में प्रतिबिंब का उपयोग करना चाहिए, और मार्क उत्तर यह प्राप्त करने के लिए सबसे सरल और संभावित तरीका दिखाता है। – ShuggyCoUk