不区分大小写的GetMethod?

mpe*_*pen 14 c# reflection

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

是否有一种不区分大小写的方法来获取方法?

Han*_*ant 26

是的,使用BindingFlags.IgnoreCase:

var method = filterType.GetMethod(filter, 
    BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
Run Code Online (Sandbox Code Playgroud)

注意可能的歧义,你会得到一个AmbiguousMatchException.


jyo*_*ung 5

要获得一个类似于 GetMethod(filter) 的方法,但它会忽略您需要的情况:

var method = filterType.GetMethod(filter, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance| BindingFlags.IgnoreCase);
Run Code Online (Sandbox Code Playgroud)

这将不起作用: var method = filterType.GetMethod(filter, BindingFlags.IgnoreCase);