我知道我们可以调用函数,其名称存储在这样的字符串中:
Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(TheCommandString);
theMethod.Invoke(this, userParameters);
他们在C#中的任何方式我可以通过它调用类中的所有函数,除了字符串中的函数吗?
想要它在后期绑定中,因为我有一些字符串数组,其中包含需要从执行中丢弃的方法名称。
答案 0 :(得分:1)
如果您尝试使用反射执行除特定方法之外的所有方法,您只需要获取所有方法并排除您不感兴趣的方法。排除单个方法名称的示例:
var methods = this.GetType().GetMethods()
.Where(t => t.Name != "Whatever");
foreach(var method in methods)
{
method.Invoke(this, userParameters);
}
如果您有方法名称列表,则只需更改过滤器,例如:
var methodNames = new [] { "Method1", "Method2" };
var methods = this.GetType().GetMethods()
.Where(t => !methodNames.Contains(t.Name);