反射使用方法

//反射的使用方法
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);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值