繁体   English   中英

使用反射和List <>,可以通过扩展方法返回特定属性的数组吗?

[英]Using reflection and a List<>, can one return an array of specific properties via an extension method?

我不确定这个术语,所以请原谅我的不明确之处:给定List <someclass>集合,可以使用refection创建一种扩展方法,该方法允许使用以下方法返回列表集合中特定类成员/属性的数组:属性名称? 我意识到内部类型可能会有所不同,但扩展方法会返回正确的类型。

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");
var propDouble = listOfClasses.Select(x => typeof(someClass)
                                           .GetProperty("someDouble")
                                           .GetValue(x)).ToArray();

简短答案:是

怎么样:

object[] propDouble = listOfClasses.Select(o => o.GetType()
                                                 .GetField("someDouble")
                                                 .GetValue(o)).ToArray();

您可以轻松地将其转换为扩展方法。

这不能满足您的需求吗???

List<someclass> L;
IEnumerable<DesiredPropertyType> Properties = 
     L.Select(Item => Item.DesiredProperty).ToArray();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM