※下記のサンプルデータを対象にしたものです
※using System.Reflection;
※using System.Reflection;
private フィールドに値を入れる
/// <summary>
/// private フィールドに値を突っ込むサンプル
/// </summary>
private void SetPrivateValue()
{
Generater gene = new Generater();
Type type = typeof(Generater);
FieldInfo info = type.GetField("pValue", BindingFlags.SetField | BindingFlags.NonPublic | BindingFlags.Instance);
info.SetValue(gene, "できた!!!");
Console.WriteLine(gene.GetValue());
}
戻り値無しのprivate メソッドの実行サンプル
/// <summary>
/// 戻り値無しのprivate メソッドの実行サンプル
/// </summary>
private void ExecPrivateMethod()
{
Generater gene = new Generater();
Type type = typeof(Generater);
MethodInfo method = type.GetMethod("GetData", BindingFlags.NonPublic | BindingFlags.Instance, null
, new Type[] { typeof(string), typeof(DateTime), typeof(MethodBase) }, null);
MethodBase methodBase = null;
method.Invoke(gene, new object[] { "できるかな?", DateTime.Now, methodBase });
}
戻り値有りのprivate メソッドの実行サンプル
/// <summary>
/// 戻り値有りのprivate メソッドの実行サンプル
/// </summary>
private void ExexPrivateMethodReturn()
{
Generater gene = new Generater();
Type type = typeof(Generater);
MethodInfo method = type.GetMethod("GetData", BindingFlags.NonPublic | BindingFlags.Instance, null
, new Type[] { typeof(string), typeof(object) }, null);
object obj = method.Invoke(gene, new object[] { "戻り値希望!", null });
if (obj == null) Console.WriteLine("失敗");
Console.WriteLine(((EventMessage)obj).time.ToString());
}
サンプルデータクラス
public class EventMessage
{
public string val = "data";
public string Daata = "data";
public DateTime time = DateTime.Now;
}
public class Generater
{
private int Count;
private string pValue;
Generater s_Instance;
public Generater()
{
s_Instance = this;
}
public string GetValue()
{
return pValue;
}
public void GetData(string val)
{
Console.WriteLine(val);
}
public void GetData(string val, DateTime date)
{
Console.WriteLine(val);
}
private EventMessage GetData(string val, object obj)
{
EventMessage e = new EventMessage();
return e;
}
private void GetData(string val, DateTime date, MethodBase method)
{
Console.WriteLine(val);
}
}