加入收藏 | 设为首页 | 会员中心 | 我要投稿 聊城站长网 (https://www.0635zz.com/)- 智能语音交互、行业智能、AI应用、云计算、5G!
当前位置: 首页 > 综合聚焦 > 编程要点 > 语言 > 正文

C#反射技术的简单操作介绍

发布时间:2023-02-25 15:38:56 所属栏目:语言 来源:
导读:为了动态地分配或赋值类型实例的属性,我们必须首先获取实例或类型的Type,错新技术频道已经为大家整理了C#反射技术的简单操作,希望对你学习这方面知识有帮助。

首先建立一个测试的类

复制代码 代码如下:
为了动态地分配或赋值类型实例的属性,我们必须首先获取实例或类型的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(),操作方法同上。
 
 

(编辑:聊城站长网)

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