我使用下面的代码循环遍历类中的所有静态方法,但是有许多重载方法。我只想要唯一的名字,所以例如,如果有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);
请注意,我把排序放在了最后,所以排序的东西更少了——而且因为我们无论如何都只得到名字,所以我们只是执行自然排序。