c# - 反射的使用

9 篇文章 0 订阅
反射的定义

审查元数据并收集关于它的类型信息的能力。元数据(编译以后的最基本数据单元)就是一大堆的表,当编译程序集或者模块时,编译器会创建一个类定义表,一个字段定义表,和一个方法定义表等。
System.reflection命名空间包含的几个类,允许你反射(解析)这些元数据表的代码
和反射相关的命名空间(我们就是通过这几个命名空间访问反射信息)

反射的作用:
  1. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现 有对象中获取类型
  2. 应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射。
  3. 反射主要应用与类库,这些类库需要知道一个类型的定义,以便提供更多的功能。

头部引用加:

using System.Reflection;
Assembly asm = Assembly.Load("SomeAssembly");    //根据程序集的名字加载程序集,

Assembly asm = Assembly.LoadFrom (@"C:\xx\SomeAssembly.dll");   //程序集的完整路径

//加载dll后,需要使用dll中某类.
Type t = asm.GetType("namespace.classname");//获取类名,必须 命名空间+类名  

 //实例化类型
object o = Activator.CreateInstance(t);

//得到要调用的某类型的方法
MethodInfo method = t.GetMethod("functionname");//functionname:方法名字

object[] obj =
{
     Parameters[0].TaxpayerName,
     Parameters[0].TaxpayerTaxCode,
     Parameters[0].CAPassword
};
//对方法进行调用
var keyData = method.Invoke(o, obj);//param为方法参数object数组
Myclass my = new Myclass(); 
Type type = my.GetType();          //通过对象获取这个对象所属类的Type对象
Console.WriteLine(type.Name);      //关于类总体的:类名、名字空间、程序集
Console.WriteLine(type.Namespace);
Console.WriteLine(type.Assembly); 
FieldInfo[] array = type.GetFields();        //关于类里面的:获取字符
foreach(var temp in array)
{
    Console.WriteLine(temp.Name);
} 
PropertyInfo[] array = type.GetProperties();//获取属性
foreach(var temp in array)
{
    Console.WriteLine(temp.Name);
} 
MethodInfo[] array = type.GetMethods();     //获取方法
foreach (var temp in array)
{
    Console.WriteLine(temp.Name);
} 
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值