Поиск методов в списке C#

221
20 июня 2017, 22:40

Есть список List<MethodInfo> с записанными в него методами. Надо выполнить поиск по списку(по свойству MethodInfo.Name), чтобы потом получить нужный MethodInfo и запустить его через Invoke;

Answer 1
var consoleType = typeof(Console);
var methods = new List<MethodInfo>(consoleType.GetMethods());
string wantedMethodName = "WriteLine";

1) Можно сделать простой перебор списка и забрать первый элемент, удовлетворяющий условию:

MethodInfo findedMethod;
foreach (var method in methods)
{
    if (method.Name == wantedMethodName)
    {
        findedMethod = method;
        break;
    }
}

2) Или воспользоваться методами LINQ, что сделает код проще и симпатичнее:

var findedMethod = methods.FirstOrDefault(m => m.Name == wantedMethodName);

или

var findedMethod = methods.Find(m => m.Name == wantedMethodName);

Об отличиях FirstOrDefault и Find можете прочесть здесь.

Answer 2
private MethodInfo FindMethodInfo(string name)
{
    return MethodInfoList?.Where(r => r.Name == name).FirstOrDefault();
}

Поправил, как подсказал @teanЫЧ

READ ALSO
TextBlock не отзывается на INotifyPropertyChanged

TextBlock не отзывается на INotifyPropertyChanged

Поиск в интернетах не дал результатов, у многих есть такая же проблемаИспользовать вместо TextBlock TextBox, не могу, нужны Run'ы

211
Трудности с DockPanel - не работает выравнивание

Трудности с DockPanel - не работает выравнивание

- вот в таком случае получается, что кнопка находится по центру а не справа

226
WPF - ConvertBack для коллекции

WPF - ConvertBack для коллекции

Имеется список всех контрагентов Contractors, имеется список партнеров Partners, второй список есть подмножество первого, оба свойства доступны в VM

256
Как узнать какие порты открыты на локальном компьютере?

Как узнать какие порты открыты на локальном компьютере?

Как узнать какие порты открыты на моем девайсе, программным методом C#

448