Регистронезависимый GetMethod? - PullRequest
14 голосов
/ 24 октября 2010
foreach(var filter in filters)
{
    var filterType = typeof(Filters);
    var method = filterType.GetMethod(filter);
    if (method != null) value = (string)method.Invoke(null, new[] { value });
}

Существует ли способ получения метода без учета регистра?

Ответы [ 3 ]

26 голосов
/ 24 октября 2010

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

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

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

4 голосов
/ 24 октября 2010

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

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

Это не будет работать: var method = filterType.GetMethod (filter, BindingFlags.IgnoreCase);

2 голосов
/ 24 октября 2010

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

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