你可以使用字典一样建议,并作出方法调用来构建从字典中的参数数组,并从实例调用方法:既然你定义的这个对象,你可以在这样的方法使用你通过。
public static class Invoker
{
public static void Invoke<TClass>(string methodName, Dictionary<string, object> myParameterObject, TClass instance)
{
var method = typeof(TClass).GetMethod(methodName, BindingFlags.NonPublic | BindingFlags.Instance);
var parameters = method.GetParameters().Select(parameter => myParameterObject.ContainsKey(parameter.Name) ? myParameterObject[parameter.Name] : null).ToArray();
method.Invoke(instance, parameters);
}
}
,并调用它像
var parameters = new Dictionary<string, object> { { "b", "b_value" }, { "c", "c_value" } };
var myClass = new MyClass();
Invoker.Invoke("MyMethod", parameters, myClass);
Console.ReadKey();
假设你的MyClass的将包含的MyMethod
public class MyClass
{
private void MyMethod(string a = "", string b = "", string c = "")
{
Console.WriteLine("a : " + a + " b : " + b + " c : " + c);
}
}
虽然这是非常容易出错,但作为反思技能的练习有用。
'List'? –
Liam
只需定义一个可容纳3个字符串的对象?问题在哪里? – Nico
我猜测有一个可变数量的参数@Nico? – Liam