我需要一种使用反射从通用 HashSet 获取值的方法。这是我尝试过的(您可以在控制台应用程序上复制/粘贴它):
class Program
{
public class Order
{
public int Id { get; set; }
}
public class Person
{
public string Name { get; set; }
public ICollection<Order> Orders { get; set; }
}
static void Main(string[] args)
{
var person = new Person();
person.Name = "Test Person";
person.Orders = new HashSet<Order>();
person.Orders.Add(new Order() { Id = 1 });
person.Orders.Add(new Order() { Id = 2 });
var reflectedOrders = person.GetType().GetProperty("Orders").GetValue(person, null);
Console.WriteLine("How do I iterate the reflected orders?");
Console.ReadLine();
}
}
编辑
这是一个例子,在实际应用中我不知道要转换哪种类型的反射订单。我只知道该属性是一个ICollection<T>
(由 EF 转为 HashShet)