现在,我有:targetType.GetMethod("get_Item", BindingFlags.Instance)
有更好的吗?
最佳答案
我更喜欢使用 PropertyInfo.GetIndexParameters
:
var indexers = targetType.GetProperties(bindingFlags)
.Where(p => p.GetIndexParameters().Any());
.Select(p => p.GetGetMethod());
现在
indexers
是与IEnumerable<MethodInfo>
中指定的指定BindingFlags
匹配的索引器的 setter/getter 的bindingFlags
。请注意,代码是如何从
targetType
读取的,如何获取与bindingFlags
匹配的属性,将其作为索引器,然后投影到getter。与使用魔术字符串"get_Item"
相比,它的神秘性要低得多,并且可以轻松处理多个索引器。如果您知道只有一个,那么您当然可以使用
Single
。如果您要查找特定的一种,则可以相应地检查GetIndexParameters
的结果。关于c# - 获取 “get_Item” MethodInfo的优化方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/4952070/