【发布时间】:2017-06-15 14:23:20
【问题描述】:
我需要获取类中所有成员的类型。
public class Order
{
public int OrderID { get; set; }
public int EmployeeID { get; set; }
public string CustomerID { get; set; }
public DateTime OrderDate { get; set; }
public bool Verified { get; set; }
public Order(int orderId, int empId, string custId, DateTime orderDate, bool verify)
{
this.OrderID = orderId;
this.EmployeeID = empId;
this.CustomerID = custId;
this.OrderDate = orderDate;
this.Verified = verify;
}
}
以及我通过 List 添加的类的值
List<dynamic> dy = new List<dynamic>();
dy.Add(new { OrderID = 11, EmployeeID = 5, CustomerID = "ALFKI", OrderDate = new DateTime(2015,01, 10), Verified = true });
dy.Add(new { OrderID = 12, EmployeeID = 4, CustomerID = "CDSAW", OrderDate = new DateTime(2015, 02, 12), Verified = true });
dy.Add(new { OrderID = 13, EmployeeID = 6, CustomerID = "ASDFG", OrderDate = new DateTime(2015, 03, 13), Verified = true });
dy.Add(new { OrderID = 14, EmployeeID = 3, CustomerID = "XSDAF", OrderDate = new DateTime(2015, 04, 14), Verified = false });
dy.Add(new { OrderID = 15, EmployeeID = 2, CustomerID = "MNHSD", OrderDate = new DateTime(2015, 05, 15), Verified = true });
dy.Add(new { OrderID = 16, EmployeeID = 1, CustomerID = "OKJHG", OrderDate = new DateTime(2015, 06, 16), Verified = false });
return dy;
为了获取字段类型,我尝试了以下代码。
Type type = dataSource.GetElementType();
Type t = typeof(object);
t = type.GetProperty("OrderDate").PropertyType;
它会引发空表达式错误。
这里的 OrderDate 是 DateTime 对象。
Type type = dataSource.GetType();
这一行,返回 System.object。
尝试获取 OrderDate 字段类型时。
type.GetProperty(filterString).PropertyType;
返回 Null,如何解决此问题。
【问题讨论】:
-
你的意思是像这里描述的那样? stackoverflow.com/questions/6536163/…
-
这看起来像是对
dynamic的不当使用... -
你能定义什么是
dataSource吗? -
嗨 Matthew Watson,为了方便起见,我在 List 中使用了动态关键字。不要考虑那个,我的要求是获取Class中字段的类型。这里dataSource指的是包含Order类记录的dy列表
标签: c# generics member system.type