这篇文章将为大家详细讲解有关C#中怎么反射命名空间,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。
创新互联建站网站建设服务商,为中小企业提供网站设计、网站制作服务,网站设计,绵阳服务器托管等一站式综合服务型公司,专业打造企业形象网站,让您在众多竞争对手中脱颖而出创新互联建站。
C#反射命名空间详细介绍:
1.System.Reflection命名空间内的各类型
(1) Assembly通过它可以加载、了解和操纵一个程序集
(2) AssemblyName 通过它可以找到大量隐藏在程序集的身份中的信息,如版本信息、区域信息等
(3) EventInfo 事件的信息
(4) FieldInfo 字段的信息
(5) MethodInfo 方法的信息
(6) ParameterInfo 参数的信息
(7) PropertyInfo 属性的信息
(8) MemberInfo 是抽象基类,为 EventInfo、FieldInfo 、MethodInfo、PropertyInfo等类型定义了公共的行为。
(9) Module 用来访问带有多文件程序集的给定模块
2.System.Type类
System.Type支持的成员可以分为这样几类
(1) Is*** 用来检查一个类型的元数据,如IsAbstract、IsClass、IsValueType等等
(2) Get*** 用来从类型得到指定项目,如GetEvent()得到类型的一个指定的事件(EventInfo)。 另外,这些方法都有一个单数版本和一个复数版本。如GetEvent()对应有一个复数版 本GetEvents(), 该方法返回一个相关的EventInfo数组
(3) FindMembers() 根据查询条件返回一个MemberInfo类型的数组
(4)GetType() 该静态方法根据一个字符串名称返回一个Type实例
(5)InvokeMember() 对给定项目进行晚期绑定
3.得到一个Type类型实例的三种方法
因为Type是一个抽象类,所以不能直接使用new关键字创建一个Type对象
(1)使用System.Object.GetType()
Person pe=new Person(); //---------定义pe为person类的一个对象 Type t=pe.GetType();
(2)使用System.Type.GetType()静态方法,参数为类型的完全限定名
Type t=Type.GetType("Entity.Person");
该方法被重载,允许指定两个布尔类型的参数,一个用来控制当前类型不能找到时是否抛出异常,
另一个用来指示是否区分字符串大小写
Type t=Type.GetType("Entity.Person",false,true);
注意到传入的字符串并没有包含类型所在的程序集信息,此时该类型便被认为是定义在当前执行的程序集中的。
要得到一个外部私有程序集的类型元数据时,字符串参数必须使用类型完全限定名加上类型所在程序集的友好名字
Type t=Type.GetType("Entity.Person","Entity"); //------"Entity"即为类型所在程序集的友好名字
嵌套类型:传入的字符串可以指定一个+标记来表示一个嵌套类型,如希望得到一个嵌套在person类中的枚举类型City的类型信息,则可以这样
Type t=Type.GetType("Entity.person+City");
(3)使用typeof运算符
Type t=typeof(person);
三种方法的比较:
使用***种方法必须先建立一个实例,而后两种方法不必先建立实例。但使用typeof运算符仍然需要知道类型的编译时信息,而使用System.Type.GetType()静态方法不需要知道类型的编译时信息,所以是***方法。
关于C#中怎么反射命名空间就分享到这里了,希望以上内容可以对大家有一定的帮助,可以学到更多知识。如果觉得文章不错,可以把它分享出去让更多的人看到。
当前文章:C#中怎么反射命名空间
网页链接:http://lswzjz.com/article/pgspog.html