我正在使用以下内容遍历类中的所有静态方法,但是有许多重载方法。我只想要唯一的名称,例如,如果有3个重载方法名为“Run()”,那么我只想在我的查询中返回1而不是3.现在我不在乎有重载方法。有没有办法可以在查询上过滤掉这个而不是之后?该类有600多个静态方法(它是来自DLL的另一个库的绑定),如果我可以预先限制唯一的名称,它应该有助于加快我的负载。我基本上拿着名字并用名字填充菜单。
MethodInfo [] leMethods = typeof(MyType).GetMethods(BindingFlags.Public | BindingFlags.Static);
答案 0 :(得分:12)
我不相信在GetMethods
调用中有任何办法,但事后很容易用LINQ做:
var methodNames = typeof(MyType).GetMethods(BindingFlags.Public |
BindingFlags.Static)
.Select(x => x.Name)
.Distinct()
.OrderBy(x => x);
请注意,我已将排序放在最后,因此排序较少 - 而且因为我们只是获取了名称,所以我们只是执行自然排序。