禁用字符串c#中的函数

时间:2017-10-26 12:45:45

标签: c# reflection

我知道我们可以调用函数,其名称存储在这样的字符串中:

Type thisType = this.GetType();
MethodInfo theMethod = thisType.GetMethod(TheCommandString);
theMethod.Invoke(this, userParameters);

他们在C#中的任何方式我可以通过它调用类中的所有函数,除了字符串中的函数吗?

想要它在后期绑定中,因为我有一些字符串数组,其中包含需要从执行中丢弃的方法名称。

1 个答案:

答案 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);