C# 使用参数调用方法

C# 使用参数调用方法,c#,dynamic,reflection,parameters,invoke,C#,Dynamic,Reflection,Parameters,Invoke,我有一个编辑器,它在脚本(及其参数)中反映方法,然后让用户可以查看所有方法,使最终用户可以轻松地从编辑器调用方法 示例方法包括: public void TestMethodOne(damage float1, duration float2, ticks float3){} public void TestMethodTwo(damage float1, walkSpeed float2){} 在编辑器中,它看起来像: TestMethodOne - Damage:[] Duration:

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

示例方法包括:

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){}
这不是我想做的。 方法的数量及其浮动参数的数量将定期更新,并且编辑器编码为根据其参数名称显示方法值,因此上述“修复”不是选项


是否有任何方法可以实现这一点,或者可以通过其他方式来解决,而不是通过反思来实现这一点?

不太清楚您有什么问题。你是否因为不想了解它或其他原因而寻找反思的替代方案?很明显,你应该已经搜索并找到了这样的示例,所以我假设你的帖子不是普通的“通过反射调用方法”答案的重复。。。请说明你需要什么帮助。嗨,对不起,我不擅长解释。基本上,我有类似于public void TestMethodOne(损坏float1、持续时间float2、ticks float3)的方法{}-有没有一种方法可以在不更改方法本身的情况下,从字符串和一系列float作为参数来调用/运行它们?