现在,我有: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/

10-09 05:13