Tôi muốn thêm một mục vào danh sách Chung bằng cách sử dụng phản chiếu. Trong phương pháp "DoSomething", tôi đang cố hoàn thành dòng sau,Thêm mục vào Danh sách chung/Bộ sưu tập bằng cách sử dụng phản chiếu
pi.PropertyType.GetMethod("Add").Invoke(??????)
nhưng tôi nhận được các loại lỗi khác nhau.
Dưới đây là mã hoàn chỉnh của tôi
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(??????)
}
}
}
}
Bất kỳ ý tưởng/đề nghị?
Loại nào là MyBaseCollection? Nó có giống với Danh sách không? Không phải tất cả các lớp thực hiện IEnumerable đều được đảm bảo có phương thức Thêm. –
JoeyRobichaud
@JoeRobich: MyBaseCollection là việc thực hiện bộ sưu tập của riêng nó bắt nguồn từ IList, Ngay cả câu trả lời cho Danh sách cũng sẽ giải quyết được vấn đề của tôi ... –
kayak