下面通過例題對該方法進行簡單應用(我一直以為,要讓例題起到更容易理解文字的意義和作用,撰寫的例題越簡單越直觀越好。)
using System;
using System.Reflection;
& nb
namespace ConsoleApplication9
{
class Love
{
public int fIEld1;
private string _name;
public Love()
{
}
public string Name
{
get
{
return _name;
}
set
{
_name=value;
}
}
public int GetInt(int a)
{
return a;
}
public void Display(string str)
{
Console.WriteLine(str);
}
}
/// <summary>
/// Class1 的摘要說明。
/// </summary>
class Class1
{
/// <summary>
/// 應用程序的主入口點。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此處添加代碼以啟動應用程序
//
Love love = new Love();
Type type = love.GetType();
Object obj = type.InvokeMember(null,
BindingFlags.DeclaredOnly |
BindingFlags.Public | BindingFlags.NonPublic |
BindingFlags.Instance | BindingFlags.CreateInstance, null, null, args);
//調用沒有返回值的方法
type.InvokeMember("Display",BindingFlags.InvokeMethod | BindingFlags.Public | BindingFlags.Instance , null , obj , new object[]{"aldfjdlf"});
//調用有返回值的方法
int i = (int)type.InvokeMember("GetInt",BindingFlags.InvokeMethod | BindingFlags#0000cc">.Public | BindingFlags.Instance,null,obj,new object[]{1});
Console.WriteLine(i);
//設置屬性值
type.InvokeMember("Name",BindingFlags.SetProperty,null,obj,new string[]{"abc"});
//獲取屬性值
string str=(string)type.InvokeMember("Name",BindingFlags.GetProperty,null,obj,null);
Console.WriteLine(str);
//設置字段值
type.InvokeMember("field1",BindingFlags.SetFIEld,null,obj,new object[]{444});
//獲取字段值
int f=(int)type.InvokeMember("field1",BindingFlags.GetFIEld,null,obj,null);
Console.WriteLine(f);
Console.ReadLine();
}
}
}