का उपयोग कर जेनेरिक सूची/संग्रह में आइटम जोड़ें मैं प्रतिबिंब का उपयोग कर जेनेरिक सूची में कोई आइटम जोड़ना चाहता हूं। विधि "DoSomething" में, मैं, निम्न पंक्ति को समाप्त करने केप्रतिबिंब
pi.PropertyType.GetMethod("Add").Invoke(??????)
कोशिश कर रहा हूँ, लेकिन मैं त्रुटि के विभिन्न प्रकार के हो रही है।
नीचे मेरा पूरा कोड
public class MyBaseClass
{
public int VechicleId { get; set; }
}
public class Car:MyBaseClass
{
public string Make { get; set; }
}
public class Bike : MyBaseClass
{
public int CC { get; set; }
}
public class Main
{
public string AgencyName { get; set; }
public MyBaseCollection<Car> lstCar {get;set;}
public void DoSomething()
{
PropertyInfo[] p =this.GetType().GetProperties();
foreach (PropertyInfo pi in p)
{
if (pi.PropertyType.Name.Contains("MyBaseCollection"))
{
//Cln contains List<Car>
IEnumerable<MyBaseClass> cln = pi.GetValue(this, null) as IEnumerable<MyBaseClass>;
**//Now using reflection i want to add a new car to my object this.MyBaseCollection**
pi.PropertyType.GetMethod("Add").Invoke(??????)
}
}
}
}
कोई भी विचार/सुझाव है?
MyBaseCollection का प्रकार क्या है? क्या यह एक सूची के समान है? IENumerable को लागू करने वाले सभी वर्गों को एक विधि जोड़ने की गारंटी नहीं है। –
JoeyRobichaud
@JoeRobich: MyBaseCollection अपने संग्रह कार्यान्वयन है जो IList से लिया गया है, यहां तक कि सूची के लिए भी जवाब मेरी समस्या का समाधान करना चाहिए ... –
kayak