如果我有这样的事情

IFoo f = FooFactory.CreateFoo1();


如何选择随机的CreateFoo方法来调用? FooFactory是静态的,包含大约15种不同的IFoo类型。我想每次按下按钮时随机调用其中一个。我试过了

var methods = typeof(FooFactory).GetMethods(BindingFlags.Public | BindingFlags.Static
                                     | BindingFlags.InvokeMethod);

int index = random.Next(methods.Length);
IFoo randomFoo = (IFoo)(methods[index].Invoke(null, null));


但这导致System.Reflection.TargetParameterCountException。如何调用随机方法?

最佳答案

您唯一需要更改的是typeof(IFoo),因为您要调用FooFactory的静态方法之一。

尝试typeof(FooFactory)

PS:假设您的方法没有任何参数(或所有参数都具有相同数量和类型的参数)

07-25 21:10