我正在使用以下内容遍历类中的所有静态方法,但是有许多重载方法.我只想要唯一的名称,例如,如果有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)
请注意,我已将排序放在最后,因此排序较少 - 而且因为我们只是得到了名称,所以我们只是执行自然排序.