foreach(var filter in filters)
{
var filterType = typeof(Filters);
var method = filterType.GetMethod(filter);
if (method != null) value = (string)method.Invoke(null, new[] { value });
}
Есть ли способ, не учитывающий регистр, метод?
Ответ 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.