C#反射循环通过方法并仅给出唯一的名称(忽略重载)

use*_*521 2 c# reflection

我正在使用以下内容遍历类中的所有静态方法,但是有许多重载方法.我只想要唯一的名称,例如,如果有3个重载方法名为"Run()",那么我只想在我的查询中返回1而不是3.现在我不在乎有重载方法.有没有办法可以在查询上过滤掉这个而不是之后?该类有600多个静态方法(它是来自DLL的另一个库的绑定),如果我可以预先限制唯一的名称,它应该有助于加快我的负载.我基本上拿着名字并用名字填充菜单.

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

Jon*_*eet 12

我不相信GetMethods调用中有任何方法可以做到这一点,但事后用LINQ很容易做到:

var methodNames = typeof(MyType).GetMethods(BindingFlags.Public |
                                            BindingFlags.Static)
                                .Select(x => x.Name)
                                .Distinct()
                                .OrderBy(x => x);
Run Code Online (Sandbox Code Playgroud)

请注意,我已将排序放在最后,因此排序较少 - 而且因为我们只是得到了名称,所以我们只是执行自然排序.