Отражение в C # проходит через методы и дает только уникальные имена (игнорируя перегруженные) - PullRequest
2 голосов
/ 21 апреля 2011

Я использую следующее, чтобы перебрать все статические методы в классе, но есть несколько перегруженных методов. Мне нужны только уникальные имена, поэтому, например, если есть 3 перегруженных метода с именем «Run ()», то я хочу, чтобы в моем запросе возвращался только 1, а не 3. На данный момент мне все равно, что есть перегруженные методы. Есть ли способ, которым я могу отфильтровать это по запросу, а не после? Класс имеет более 600 статических методов (это привязка из другой библиотеки из DLL), и если я могу ограничить уникальные имена заранее, это должно помочь ускорить мою загрузку. Я в основном беру имена и заполняю меню именами.

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

1 Ответ

12 голосов
/ 21 апреля 2011

Я не верю, что есть какой-либо способ сделать это в GetMethods вызове , но впоследствии это легко сделать с помощью LINQ:

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

Обратите внимание, что я поставилпорядок в самом конце, так что сортировки меньше - и так как мы все равно получаем имя, мы просто выполняем естественный порядок.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...