foreach(var filter in filters)
{
var filterType = typeof(Filters);
var method = filterType.GetMethod(filter);
if (method != null) value = (string)method.Invoke(null, new[] { value });
}
是否有一种不区分大小写的方法来获取方法?
答案 0 :(得分:25)
是的,使用BindingFlags.IgnoreCase:
var method = filterType.GetMethod(filter,
BindingFlags.IgnoreCase | BindingFlags.Public | BindingFlags.Instance);
注意可能的歧义,你会得到一个AmbiguousMatchException。
答案 1 :(得分:4)
获取一个类似于GetMethod(过滤器)的方法,除了它忽略了你需要的情况:
var method = filterType.GetMethod(filter, BindingFlags.Public | BindingFlags.Static | BindingFlags.Instance| BindingFlags.IgnoreCase);
这不起作用: var method = filterType.GetMethod(filter,BindingFlags.IgnoreCase);
答案 2 :(得分:2)
请看一下GetMethod的这个变体,特别注意其中一个BindingFlags
是IgnoreCase
。