你可以使用字典一樣建議,並作出方法調用來構建從字典中的參數數組,並從實例調用方法:既然你定義的這個對象,你可以在這樣的方法使用你通過。
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