c#进阶之路-反射(笔记3)

一、学习准备
1、创建Runanmou.DB.Interface与Ruanmou.DB.Sqlserver类库,以及项目主程序;
2、在第一个类库下申明一个(Qury)查询接口。在第二个类库下完成接口的功能实现;
二、旧方法使用方式;
1、引用类名控件、实例化类库;列:IdBhelper dbhelper=new DbHelper();
2、dbhelper.Qury();这是以往的使用接口下方法的方式;
三、(浅谈)用配置文件打开动态申明使用的类库;减少细节的实现;达到动态耦合,可根据项目需要随时加载对应需要的类库;

1、Assember assembly=Assember.Load("类库名");//反射入口。动态加载dll的关键语句

2、type dbhelperType=assembly.gettype("Runanmou.DB.SqlServer.DBHelper");//基于类库的完整名称,找出类型
3、object odbHelper=Activator.CreateInstance(dbHelperType);//根据类型。创建对象
4、IDBHelper dbHelperReflction=(IDBHerlper)odbHelper;强制转换也可is as判断
5、dbHElperReflection.Query();//完成方法调用

四、根据配置文档实现动态调用
1、引用配置文件命名空间System.Configuration
2、在配置文档里面申明字符串<appseeting><add key="Ruanmou.OB.Interface.IDBHelper" value="Ruanmou.DB.SQlserver.DBHelper,Ruanmou.DB.Sqlserver"></appseeting>
3、string nameSpace=ConfigurationManager.AppSetting["Ranmou.DB.interface.Idehelper"]
4、string[] nameSpaceArry=nameSpace.Split(',');
5、Assember assembly=Assember.Load(nameSpaceArry[1]);
6、type dbhelperType=assembly.gettype(ameSpaceArry[0]);
至此动态引用dll便也实现;更改配置文档中的字符串可实现程序引用不同的方法、比如在有多个实现类的情况下、程序可在不更改代码的情况下,在配置文件中选择使用不同的方法;
五、反射方法、实现真正的不依赖接口调用方法
1、Assembly assembly =Assembly.lod("dll名");
2、type type =assembly.gettype("基于类的名称,找出类型");
3、object oObject=Activator.CreateInstance(type);//根据类创建对象
4、MethodIndo 方法名=type.GetMethod("类的方法名");
    调用:方法名.invoke(oObject,null);调用无参方法
    调用:MethodIndo 方法名=type.GetMethod("方法名",new type[]{typeof(int)});//有参
    调用:方法名.invoke(oObject,new object[]{11});
5、调用私有方法
 MethodInfo 方法名=type.GetMethod("私有方法名",BindingFlags.Instance|BindingFlags.Public|BindingFlags.NonPublic);
方法名.Invoke(oObject,new object[]{"桑拉"});调用类里私有有参方法


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值