使用反射检索数组中的特定元素
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】:您需要获取与之前提供的名称对应的方法。 Last
和 First
都是在 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
以上是关于使用反射检索数组中的特定元素的主要内容,如果未能解决你的问题,请参考以下文章