您的位置:首页 > 其它

net技术中"反射"的使用方法

2009-09-15 09:35 513 查看
本文主要介绍net技术中"反射"的使用方法,包括如何对属性赋值,获取变量,属性,方法,事件的列表,如何设置属性及调用方法等.希望对新人有所帮助咯.
//反射的使用方法

public class TestProperty
{

private int i_seqnum = 0;

private string s_authorid = string.Empty;

public int SeqNum
{
get { return i_seqnum; }
set { i_seqnum = value; }
}

public string AuthorID
{
get { return s_authorid; }
set { s_authorid = value; }

}

public TestProperty()
{

}

public TestProperty(string as_authorid)
{
this.AuthorID = as_authorid;
}

public void GetAuthorID()
{

if (s_authorid == "" || s_authorid == string.Empty)
{
System.Console.WriteLine("Null");
}
else
{
System.Console.WriteLine(s_authorid);
}
}

}

//调用方式

TestProperty test = new TestProperty();

Type t = test.GetType();

//列出类型的结构信息

System.Console.WriteLine("列出类型的结构信息");

ConstructorInfo[] test_constructor = t.GetConstructors();

foreach (ConstructorInfo item_constructor in test_constructor)
{
System.Console.WriteLine(item_constructor.Name);
}

//列出TestProperty类中所有变量

System.Console.WriteLine("列出TestProperty类中所有变量");

FieldInfo[] test_field = t.GetFields();

foreach (FieldInfo item_field in test_field)
{
System.Console.WriteLine(item_field.Name);
}

//列出TestProperty类中所有属性

System.Console.WriteLine("列出TestProperty类中所有属性");

PropertyInfo[] list_property = t.GetProperties();

foreach (PropertyInfo item_property in list_property)
{
System.Console.WriteLine(item_property.Name);
}

//列出TestProperty类中所有方法

System.Console.WriteLine("列出TestProperty类中所有方法");

MethodInfo[] test_method = t.GetMethods();

foreach (MethodInfo item_method in test_method)
{
System.Console.WriteLine(item_method.Name);

}

//列出TestProperty类中所有事件

System.Console.WriteLine("列出TestProperty类中所有事件");

EventInfo[] test_event = t.GetEvents();

foreach (EventInfo item_event in test_event)
{
System.Console.WriteLine(item_event.Name);
}

//赋值

t.GetProperty("SeqNum").SetValue(test, 1, null);

t.GetProperty("AuthorID").SetValue(test, "ADB01", null);

//取值

int i_seqnum = Convert.ToInt32(t.GetProperty("SeqNum").GetValue(test, null));

string s_authorid = t.GetProperty("AuthorID").GetValue(test, null).ToString();

//使用反射调用方法

//test.GetAuthorID();

System.Console.WriteLine("使用反射调用方法");

string[] s = { "BC001" };

MethodInfo method_getauthorid = t.GetMethod("GetAuthorID");

//第1种方法

object obj_name = Activator.CreateInstance(t, s);

method_getauthorid.Invoke(obj_name, null);

//第2种方法

object obj = Activator.CreateInstance(t);

method_getauthorid.Invoke(obj, null);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐