我不确定术语,所以请原谅我的不够清楚:给定一个List集合,是否可以使用refection创建一个扩展方法,允许通过使用属性名称返回list集合中特定类成员/属性的数组?我意识到内部类型可能不同,但扩展方法将返回正确的类型。
public class someClass
{
public someClass(UInt32 _someInt, Double _someDouble, String _someString)
{
someInt = _someInt;
someDouble = _someDouble;
someString = _someString;
}
public UInt32 someInt { get; set; }
public Double someDouble { get; set; }
public String someString { get; set; }
}
...
List<someClass> listOfClasses = new List<someClass>();
listOfClasses.Add(new someClass(...));
listOfClasses.Add(new someClass(...));
listOfClasses.Add(new someClass(...));
//an extension function that does something like this
object[] propDouble = listOfClasses.ToArray("someDouble");
发布于 2013-05-08 00:41:19
var propDouble = listOfClasses.Select(x => typeof(someClass)
.GetProperty("someDouble")
.GetValue(x)).ToArray();
发布于 2013-05-08 00:38:55
简短的回答:是的。
方法:
object[] propDouble = listOfClasses.Select(o => o.GetType()
.GetField("someDouble")
.GetValue(o)).ToArray();
您可以很容易地将其转换为扩展方法。
发布于 2013-05-08 00:40:54
这不是你想要的吗?
List<someclass> L;
IEnumerable<DesiredPropertyType> Properties =
L.Select(Item => Item.DesiredProperty).ToArray();
https://stackoverflow.com/questions/16424196
复制相似问题