星空网 > 软件开发 > ASP.net

.NET中使用反射访问属性方法

.net所编写的程序集包含两个重要部分:IL(中间语言代码) 和metadata(元数据)。我们编写的代码中不是有很多很多的类吗,类有很多很多的成员,在编译代码的时候,元数据表就根据代码把类的所有信息都记录在了它里面(其实它就是一个数据结构,组织类的信息)。
而反射的过程刚好相反,就是通过元数据里记录的关于类的详细信息找到该类的成员,并能使它“复活”(因为元数据里所记录的信息足够详细,以致于可以根据metadata里面记录的信息找到关于该类的IL code并加以利用)。
最后对比下:
元数据形成:根据代码具体内容形成类的记录信息;
反射:根据元数据的记录找到所需的代码;

先上代码:

.NET中使用反射访问属性方法.NET中使用反射访问属性方法
 1 using System; 2 using System.Collections.Generic; 3 using System.Linq; 4 using System.Text; 5 using System.Threading.Tasks; 6 using System.ComponentModel; 7 using System.Linq; 8 using System.Reflection; 9 10 public class reflectModel11   {12 13     public static void TestShowReflect()14     {15       //反射读取类私有属性16       Person per = new Person("ismallboy", "20102100104");17       Type t = per.GetType();18       //获取私有方法19       MethodInfo method = t.GetMethod("GetStuInfo", BindingFlags.NonPublic | BindingFlags.Instance);20       //访问无参数私有方法21       string strTest = method.Invoke(per, null).ToString();22       //访问有参数私有方法23       MethodInfo method2 = t.GetMethod("GetValue",     BindingFlags.NonPublic | BindingFlags.Instance);24       object[] par = new object[2];25       par[0] = "ismallboy";26       par[1] = 2;27       string strTest2 = method2.Invoke(per, par).ToString();28 29       //获取私有字段30       PropertyInfo field = t.GetProperty("Name", BindingFlags.NonPublic | BindingFlags.Instance);31       //访问私有字段值32       string value = field.GetValue(per).ToString();33       //设置私有字段值34       field.SetValue(per, "new Name");35       value = field.GetValue(per).ToString();36     }37   }38 39 40 /// <summary>41   /// 个人信息42   /// </summary>43   class Person44   {45     private string Name { get; set; }46     private string StuNo { get; set; }47 48     public Person(string name, string stuNo)49     {50       this.Name = name;51       this.StuNo = stuNo;52     }53 54     private string GetStuInfo()55     {56       return this.Name;57     }58 59     private string GetValue(string str, int n)60     {61       return str + n.ToString();62     }63   }

reflectModel

 




原标题:.NET中使用反射访问属性方法

关键词:.NET

*特别声明:以上内容来自于网络收集,著作权属原作者所有,如有侵权,请联系我们: admin#shaoqun.com (#换成@)。

辅助工具:https://www.goluckyvip.com/tag/4180.html
云计算:https://www.goluckyvip.com/tag/4181.html
跨境电商广告:https://www.goluckyvip.com/tag/4182.html
Amazon Fresh:https://www.goluckyvip.com/tag/4183.html
新品开发:https://www.goluckyvip.com/tag/4187.html
跨境新卖家:https://www.goluckyvip.com/tag/4188.html
Twitter和Meta的付费认证服务值得购买吗?:https://www.kjdsnews.com/a/1836404.html
零售晚报:携程发布318成绩单 近800万商家GMV增长101% :https://www.kjdsnews.com/a/1836405.html
相关文章
我的浏览记录
最新相关资讯
海外公司注册 | 跨境电商服务平台 | 深圳旅行社 | 东南亚物流