あなたは提案のような辞書を使用して、辞書からのパラメータ配列を構築し、インスタンスからメソッドを呼び出すために、メソッド呼び出しを作ることができますあなたは
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);
}
}
。にパスし、自分のMyClassがMyMethodは
が含まれますと仮定
var parameters = new Dictionary<string, object> { { "b", "b_value" }, { "c", "c_value" } };
var myClass = new MyClass();
Invoker.Invoke("MyMethod", parameters, myClass);
Console.ReadKey();
のようにそれを呼び出します
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