Подтвердить что ты не робот

Нечувствительность к регистру GetMethod?

foreach(var filter in filters)
{
    var filterType = typeof(Filters);
    var method = filterType.GetMethod(filter);
    if (method != null) value = (string)method.Invoke(null, new[] { value });
}

Есть ли способ, не учитывающий регистр, метод?

4b9b3361

Ответ 1

Да, используйте BindingFlags.IgnoreCase:

var method = filterType.GetMethod(filter, 
    BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);

Остерегайтесь возможной двусмысленности, вы получите исключение AmbiguousMatchException.

Ответ 2

Чтобы получить метод, который действует как GetMethod (фильтр), за исключением того, что он игнорирует случай, который вам нужен:

var method = filterType.GetMethod(filter, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance| BindingFlags.IgnoreCase);

Это не сработает:   var method = filterType.GetMethod(фильтр, BindingFlags.IgnoreCase);

Ответ 3

Взгляните на этот вариант GetMethod, в частности обратите внимание, что одним из возможных BindingFlags является IgnoreCase.