用params调用方法

时间:2015-12-28 00:11:50

标签: c# dynamic reflection parameters invoke

我有一个编辑器,它反映了脚本中的方法(及其参数),然后让用户可以查看它们,使最终用户可以轻松地从编辑器中调用方法。

示例方法是:

public void TestMethodOne(damage float1, duration float2, ticks float3){}
public void TestMethodTwo(damage float1, walkSpeed float2){}

在编辑器中看起来像:

TestMethodOne - Damage:[]  Duration:[]   Ticks:[]
TestMethodTwo - Damage:[]  WalkSpeed:[]                   //with [] being user input window

使用者希望使用的方法名称存储为字符串,参数存储在浮动列表中。

现在我想用存储的变量运行这些方法而不改变它们的参数

如果你改变它们,下面的作品......:

 MethodInfo method = typeof(MethodHolderScript).GetMethod(storedMethodName);
 string[] values = floatParameterList.ToArray();
 object[] args = { values };
 methodName.Invoke(instance, args);

但后来我将所有方法的参数更改为示例:

    public void TestMethodOne(object[] args){}
    public void TestMethodTwo(object[] args){}

这不是我想要做的。 方法的数量和浮点参数的数量将定期更新,编辑器将根据其参数名称显示方法值,因此上述“修复”不是一个选项。

有没有办法让这项工作,解决方案或者除了反思之外的其他方式来实现这个目标?

0 个答案:

没有答案