リフレクションを使用して汎用 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に変換された)であることだけを知っています