【发布时间】:2012-01-28 01:31:20
【问题描述】:
我想要做的是采用任何类类型并为对象图中的所有属性创建一个“get”访问器列表。
集合的确切格式、顺序等并不重要,我只是不太清楚如何开始识别和创建所有属性的访问器。它可能采用如下形式:
public static List<Func<T,object>> CreateAccessors<T>()
{
Type t = typeof(T);
// Identify all properties and properties of properties (etc.) of T
// Return list of lambda functions to access each one given an instance of T
}
public void MyTest()
{
MyClass object1;
var accessors = CreateAccessors<MyClass>();
var myVal1 = accessors[0](object1);
var myVal2 = accessors[1](object1);
// myVal1 might now contain the value of object1.Property1
// myVal2 might now contain the value of object1.Property4.ThirdValue.Alpha
}
【问题讨论】:
-
看看 Jon Skeet 的这篇博文 - msmvps.com/blogs/jon_skeet/archive/2008/08/09/…,除了递归之外,它几乎都在那里。
-
Jon 的 MVP 博客不见了,这是他(个人?)博客上的帖子副本:codeblog.jonskeet.uk/2008/08/09/…
标签: c#