使用反射检索数组中的特定元素

Posted

技术标签:

【中文标题】使用反射检索数组中的特定元素【英文标题】:Using reflection to retreive a specific element in an array 【发布时间】:2021-12-29 13:34:09 【问题描述】:

假设我有一个地址数组

如何根据给定的字符串过滤地址。例如,如果属性路径有Addresss.First(),我希望它显示第一个元素,或者Address.Last() 最后一个元素。

例如:

var _propertyInfo = case.MainContact.GetType().GetProperty("Addresses");

XPCollection<BillingUnitContactAddress> buAddresses = (XPCollection<BillingUnitContactAddress>)_propertyInfo.GetValue(case.MainContact);

BillingUnitContactAddress buAddress = buAddresses.First(); //dont want to hardcode this

【问题讨论】:

【参考方案1】:

您需要获取与之前提供的名称对应的方法。 LastFirst 都是在 Enumerable 类中定义的(扩展)方法,在 System.Linq 命名空间中:

var first = typeof(Enumerable).GetMethod("First", BindingFlags.Static);

现在您可以调用该方法了。但是请记住,扩展方法只是静态方法,因此您可以将MethodInfo.Invoke 的第一个参数设置为null

var result = first.Invoke(null, myList);

【讨论】:

你的 var = 第一行总是为我返回 null @CoreyDubois 试试BindingFlags.Public | BindingFlags.Static

以上是关于使用反射检索数组中的特定元素的主要内容,如果未能解决你的问题,请参考以下文章

从反射属性中检索反射类型中的值

数组中的猫鼬查询,用于检索从索引 0 到 n 开始的元素,其中 n 是从最后一个元素开始的位置

如何使用jQuery从数组中的元素中检索值?

如何快速检索不同单元格中的数组元素 ios

PHP无法从特定的DOM元素中检索值[重复]

仅检索 MongoDB 集合中对象数组中的查询元素