【问题标题】:Invoke random method from class从类中调用随机方法
【发布时间】:2013-07-10 04:48:31
【问题描述】:

如果我有这样的事情

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。如何调用随机方法?

【问题讨论】:

    标签: c# reflection methods static invoke


    【解决方案1】:

    你唯一应该改变的是typeof(IFoo),因为你想调用FooFactory的静态方法之一

    试试typeof(FooFactory)

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

    【讨论】:

    • 哎呀对不起,我的错,我已经有 FooFactory 了。我已经在我的问题中解决了这个问题。
    • @SSL 那么有什么问题呢?你的代码工作正常(我测试过)(假设你的方法没有任何参数)
    • 你找到了。巧合的是,这 4 次运行随机选择的具有参数的方法。我使用的那些没有,并认为它们都是一样的。将其编辑到您的答案中,因为这是问题的原因。感谢您的帮助。
    猜你喜欢
    • 2012-08-28
    • 1970-01-01
    • 1970-01-01
    • 2019-11-23
    • 1970-01-01
    • 2011-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-12-04
    相关资源
    最近更新 更多