C#反射

作者: 白面金毛九尾狐 | 来源:发表于2019-03-13 12:04 被阅读0次

注意:C#本身已经时候用了反射!!!! 以下了解即可
不过,反射可以拿到类中private的字段,这个对编程则有用
反射:通过类名,成员的名字来进行对象的实例化

通过反射创建实例
Type t = Type.GetType(“命名空间.类名”);
Object j =activator.CreateInstance(t);//实例化(默认调用无参的构造函数)-用重载,其中一个重载,可以在t后面加上true,false(选择是否只调用公共的构造函数)---true为可以调用private

公共有参
Object o = Activator.CreateInstance(t,1,2,3,4,"白");//参数需要一一对应

访问有参非公共的函数为第10个重载。。带有bingingflags.nopublic Activator.CreateInstance(t,System.Reflection.BindingFlags.NonPublic|System.Reflection.BindingFlags.Instance,null,new Object[] {1,2,3,4,"白"},null);//创建实例并返回给object o

Blindingdflags:要访问的方法火字段的描述
访问成员的权限描述
访问成员的成员归属

通过反射访问字段以及方法(这是规范,其实不这么写的话编译也是可以通过的)

字段
FieldInfo a = t.GetField("a");
a.SetValue(o, 1);
object aa = a.GetValue(o);
aa是赋的值,set是设置的值(打印的话aa是1,a只是从类中获取的变量名字以及类型(原类中的初始名字,与现在自己定义的变量a无关))

Filedinfo b = t.getFileld(“b”,BindingFlags.nopublic|binging.instance);//获取变量的参数只需要调取(buildingflags中的nopublic(访问非公共和instance(动态)还是static(静态)))

并且访问静态字段的时候
A.setvalue(null,1)//需要将变量设置为null
A.getvalue(null)

获取方法(无参)
Method me = t.getmethod(“方法”,bingdingFlags)
Me.invoke(null.null)//谁在调用方法(就是o),方法的实参列表

获取方法--有参(重载的话,在tpye[]传参数注意一下就额可以)
Methodinfo me = t.Method(“方法”,bindingFlags.Public|BindingFlags.Instance,unll,new Type[]{Ttyprof(int),typeof(double),等参数列表},null)

Me.invoke(null,null)//与上面调用方法一样

注意:用t.什么的只是为了找到原类中的变量或者方法,所以要找变量写名字(在原类中的),找方法传参数只需要传类型就可以(赋值在调用的时候赋值,可以理解为创建函数(但是变量却早已经就写好了的模板))

相关文章

  • C#它山之石

    C# 使用反射技术实例化指定的类C#之玩转反射Reactive Extensions入门IoC solutions...

  • Unity 之如何写出强壮的代码

    【反射】 Unity C#基础之 反射反射,程序员的快乐 Unity C#基础之 特性,一个灵活的小工具 【多线程...

  • 目录 - C#

    总目录 C# 第01局:泛型 C# 第02局:反射 C# 第03局:特性 C# 第04局:委托 C# 第05局:事...

  • C#特性(Attribute)-现学现用

    前言 想要灵性的使用C#反射机制,特性(Attribute)的使用是必不可少的。 C# 特性(Attribute)...

  • C#反射

    C# 反射(Reflection) 反射指程序可以访问、检测和修改它本身状态或行为的一种能力。程序集包含模块,而模...

  • C#反射

    什么是元数据,什么是反射 程序是用来处理数据的,文本和特性都是数据,而程序本身(类的本身和BLC中的类) 这些也是...

  • C#反射

    根据moduleName反射到某个类某个方法 转换成DataView操作Datatable ![B(IRRLH7`...

  • C#反射

    注意:C#本身已经时候用了反射!!!! 以下了解即可不过,反射可以拿到类中private的字段,这个对编程则有用...

  • Swift中的反射Mirror

    Swift中的反射Mirror [TOC] 前言 Mirror是Swift中的反射机制,对于C#和Java开发人员...

  • C# 反射 typeof GetType

    一、typeof GetType 参考Unity C# 游戏开发 反射 Reflection 案例讲解(图文详细,...

网友评论

      本文标题:C#反射

      本文链接:https://www.haomeiwen.com/subject/qeyzpqtx.html