मैं वस्तुओं की सूची के लिए फ़ाइल पूछने के लिए LINQ-to-XML का उपयोग कर रहा हूं। उनके सभी में एक ही संरचना है (विकल्पों की एक निश्चित संख्या, अनिश्चित लंबाई के पैरामीटर की एक सूची)। एक्सएमएल फ़ाइल में उनके नाम के आधार पर, मैं पूरी तरह से अलग-अलग चीजों के लिए पैरामीटर का उपयोग करना चाहता हूं - इसलिए मैंने इस ऑब्जेक्ट के उप-वर्ग बनाये।मैं सी # में एक रचनाकार गतिशील रूप से कैसे आ सकता हूं?
मेरा सवाल है - मैं केस कथन की तरह कुछ करने के बिना गतिशील रूप से सही कन्स्ट्रक्टर का आह्वान कैसे करूं? या एक्सएमएल से अलग-अलग उप-वर्गों को तत्काल तत्काल करने का समाधान कहीं और झूठ बोलता है?
class Object1
{
string name;
OptionObj opt;
List<Param> parameters;
}
class sonOfObject : Object1
{
public void ExecuteSomething()
{
//do something with the parameters
}
}
class secondSonOfObject : Object1
{
public void ExecuteSomething()
{
//do something entirely different with the parameters
}
}
var query = from x in xmlDoc.Descendants("Object")
select new Object
{
//select the object from the XML
}
कोड के इस बिट के बाद मुझे एक प्रति निर्माता का उपयोग अधिक व्यापक क्वेरी वस्तु से एक sonOfObject बनाने के लिए कर सकता है। लेकिन मैं बाल वर्ग के नाम पर आधारित गतिशील रूप से कैसे करूं?
मुझे पता है कि आप एक प्रकार से MethodInfo हो और यह आह्वान आला कर सकते हैं ...
MethodInfo m = t.GetMethod(someName);
m.Invoke(yourObj, null);
लेकिन मतलब यह होगा कि मैं 9 या इन बच्चे वर्ग वस्तुओं की 10 का दृष्टांत करने के लिए होता है (और प्रकार मिलता है उनमें से प्रत्येक के लिए), और अभी भी किसी तरह के केस स्टेटमेंट में समाप्त होता है।
क्या बाल वर्ग रचनाकारों को गतिशील रूप से आमंत्रित करने का एक और शानदार तरीका है?
+1 ओपी को फिर से पढ़ने के बाद मुझे विश्वास है कि यह वास्तव में बेहतर समाधान है। –