学习笔记一:C#反射与特性

反射与特性反射(能够通过非反射方式实现的功能,尽量不要用反射)引入命名空间 using System;-----Type类通过反射获取类型:(PersonNameSpace命名空间)1.System.Type t1=Typeof(PersonNameSpace.Person);2.通过对象获取类型PersonNameSpace.Person p=new PersonNameSpace...
摘要由CSDN通过智能技术生成

反射与特性

反射

(能够通过非反射方式实现的功能,尽量不要用反射)

引入命名空间 using System;-----Type类
通过反射获取类型:(PersonNameSpace命名空间)
1.System.Type t1=Typeof(PersonNameSpace.Person);
2.通过对象获取类型
PersonNameSpace.Person p=new PersonNameSpace.Person();
System.Type t2=p.GetType();
3.通过字符串获取类型
System.Type t3=System.Type.GetType("System.String");

public class Person
{
   
	//属性
}
//实例化类
Person p=new Person();
//Type类
Type t1=typeof(Person);
//通过对象获取类型 
Type t2=p.GetType();
//通过字符串获取类型
Type t3=Type.GetType("Person");

Type类(查API)

通过Type类型的对象,获取该类的信息

属性(API)
t1.Name(); //获取到类的名字
t1.FullName();//获取到类的全名(命名空间.类名)
t1.NameSpace();//获取到类的命名空间
方法(API)

GetConstructor(); —返回ConstructorInfo类型,用于取得该类的构造函数信息

通过反射的方法(构造函数)实例化对象

Activator—System命名空间下的
方法:
1.CreateInstance(Type t)—使用默认Public无参构造实例化对象
2.CreateInstance(Type t,Bool nonPublic)—使用私有的无参构造实例化对象
3.CreateInstance(Type t,params object[] args)—使用Public有参构造实例化对象
4.CreateInstance(Type t,BindingFlags,Binder,object[] args,CultureInfo)—使用私有有参构造实例化对象(BindingFlags.NonPublic | BindingFlags.Instance

//相当于Person p1=new Person ();
//通过反射,构造实例,返回的是一个object对象,接收存储
//通过反射,使用共有的无参构造函数实例化对象
object p1=Activator.CreateInstance(typeof()); 
//通过反射,使用私有的无参构造函数实例化对象
object p2=Activator.CreateInstance
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值