c#反射循环遍历方法并只给出唯一的名称(忽略重载)



我使用下面的代码循环遍历类中的所有静态方法,但是有许多重载方法。我只想要唯一的名字,所以例如,如果有3个重载方法名为"Run()",那么我只希望在我的查询中返回1,而不是3。现在我不关心是否有重载的方法。是否有一种方法,我可以过滤这个查询,而不是之后?类有600多个静态方法(它是来自DLL的另一个库的绑定),如果我可以预先限制唯一名称,它应该有助于加快加载速度。我基本上是取名字,然后用名字填充一个菜单。

MethodInfo[] leMethods = typeof(MyType). getmethods (BindingFlags.)Public | BindingFlags.Static);

我不相信在GetMethods调用中有任何方法可以做到,但之后使用LINQ:

很容易做到。
var methodNames = typeof(MyType).GetMethods(BindingFlags.Public |
                                            BindingFlags.Static)
                                .Select(x => x.Name)
                                .Distinct()
                                .OrderBy(x => x);

请注意,我把排序放在了最后,所以排序的东西更少了——而且因为我们无论如何都只得到名字,所以我们只是执行自然排序。

相关内容

  • 没有找到相关文章

最新更新