加入收藏 | 设为首页 | 会员中心 | 我要投稿 银川站长网 (https://www.0951zz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C#反射技术的简单运作

发布时间:2023-02-24 14:19:35 所属栏目:语言 来源:
导读:为了动态地分配或赋值类型实例的属性,我们必须首先获取实例或类型的Type,错新技术频道已经为大家整理了C#反射技术的简单操作,希望对你学习这方面知识有帮助。首先建立一个测试的类复制代码 代码如下:public class

为了动态地分配或赋值类型实例的属性,我们必须首先获取实例或类型的Type,错新技术频道已经为大家整理了C#反射技术的简单操作,希望对你学习这方面知识有帮助。

首先建立一个测试的类

复制代码 代码如下:

public class MyClass

{

public int one { set; get; }

public int two { set; get; }

public int five { set; get; }

public int three { set; get; }

public int four { set; get; }

}

然后编写反射该类的代码

复制代码 代码如下:

MyClass obj = new MyClass();

Type t = typeof(MyClass);

//循环赋值

int i = 0;

foreach (var item in t.GetProperties())

{

item.SetValue(obj, i, null);

i += 1;

}

//单独赋值

t.GetProperty("five").SetValue(obj, 11111111, null);

//循环获取

StringBuilder sb = new StringBuilder();

foreach (var item in t.GetProperties())

{

sb.Append("类型:" + item.PropertyType.FullName + " 属性名:" + item.Name + " 值:" + item.GetValue(obj, null) + "<br />");

}

//单独取值

int five = Convert.ToInt32(t.GetProperty("five").GetValue(obj, null));

sb.Append("单独取five的值:" + five);

string result = sb.ToString();

Response.Write(result);

测试显示结果:

类型:System.Int32 属性名:one 值:0

类型:System.Int32 属性名:two 值:1

类型:System.Int32 属性名:five 值:11111111

类型:System.Int32 属性名:three 值:3

类型:System.Int32 属性名:four 值:4

单独取five的值:11111111

好了,了解了类的属性反射使用后,聪明的你可能就想到了方法也是可以这样做的,即t.GetProperties()改为t.GetMethods(),操作方法同上。

(编辑:银川站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!