2010-10-24 2 views

ответ

22

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

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

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

+0

Если есть двусмысленность, что произойдет? Будет ли он просто вернуть первый, который он найдет? – mpen

+0

@Logan: Спасибо :) Это странно, хотя; если единственное изменение, которое я делаю для вышеуказанного кода, - это добавить аргумент 'BindFlags', мой код перестает работать. 'method' становится null, даже с BindingFlags.Default. Что может заставить его прекратить сопоставление * ничего *? – mpen

+0

@Mark - моя ошибка, флаги по умолчанию больше не применяются. Сообщение обновлено. –

2

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

3

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

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

Это не будет работать: метод вар = filterType.GetMethod (фильтр, BindingFlags.IgnoreCase);

Смежные вопросы