如何通过反射获取类中属性的“类类型”?

Oma*_*ayr 3 c# reflection propertyinfo

这是一段代码

 public class Order
    {
        //Primary Key

    public long OrderId { get; set; }

    //Many to One Relationship
    [ParentObject("PersonId")]
    public Person Buyer { get; set; }

    //One to Many Relationship
    [ChildObject("OrderId")]
    public List<OrderDetail> OrderDetails { get; set; }

    public decimal TotalAmount
    {
        get
        {
            if (OrderDetails == null)
                return 0;

            return OrderDetails.Sum(o => o.LineItemCost);
        }
    }

    public string Notes { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

我正在尝试检查 Order 对象。现在我想做的是:获取所有属性并尝试找出类类型

public List<OrderDetail> OrderDetails { get; set; }
Run Code Online (Sandbox Code Playgroud)

我想获取另一个类的“OrderDetail”类型。当我尝试使用 PropertyInfo.PropertyType 获取它时,我得到“List1”(通用类型),PropertyInfo.GetType() 给出一些 System.Reflection.RuntimeType,PropertyInfo.DeclaringType 给出“Order”(包含该属性的类)。如果有人能提出解决方案,我将不胜感激。提前致谢。

Fré*_*idi 5

您可以使用GetGenericArguments()方法并执行以下操作:

typeof(Order).GetProperty("OrderDetails").PropertyType.GetGenericArguments()[0]
Run Code Online (Sandbox Code Playgroud)