C#运用反射调用其他程序集中的代码
2024-08-28 13:00:30
加载程序集
AssMedicalAdvice = Assembly.LoadFrom(Path.Combine(Environment.CurrentDirectory, "Inscription.MedicalAdvice.Client.dll"));
1.调用静态函数,静态函数不需要实例化类,所以methodInfo.Invoke第一个参数为null
type = AssClinicalPaths.GetType("Inscription.ClinicalPaths.Client.CommonCtl.RasonV2.CP_RASON_GridFormV2");
methodInfo = type.GetMethod("Test");
methodInfo.Invoke(null, new string[] { });
2.获取静态属性
type = AssClinicalLib.GetType("Inscription.ClinicalPaths.Lib.LibManager");
string strDbType = type.GetProperty("strDBType").GetValue(null, null).ToString();
string strDbConn = type.GetProperty("strDBConn").GetValue(null, null).ToString();
3.获取实例属性
type = AssMedicalLib.GetType("Inscription.MedicalAdvice.Object.BaseSreverManager"); object objBaseServerManager = type.GetProperty("sBaseSreverManager").GetValue(null, null);
strDbType = type.GetProperty("DBType").GetValue(objBaseServerManager, null).ToString();
strDbConn = type.GetProperty("DBConn").GetValue(objBaseServerManager, null).ToString();
4.调用非静态函数,需要获取PathManager类的实例化。
或者使用Activator.CreateInstance(type)实例化类
type = AssClinicalPaths.GetType("Inscription.ClinicalPaths.Lib.PathManager");
//Object objPathManager = Activator.CreateInstance(type);
Object objPathManager = type.GetProperty("pathManager").GetValue(null, null);
methodInfo = type.GetMethod("in_RunTimeObject");
methodInfo.Invoke(objPathManager, new string[] { });
PS:反射有个有趣的特性,就是能够访问私有的字段,属性和方法。
有点类似代码级别的Hack行为。不知道这算不算一个好的OO设计,毕竟他破坏了类的封装性。
最新文章
- react-echarts之折线图的显示
- Unity Shaders 第一个默认程序分析
- Spark Streaming源码解读之数据清理内幕彻底解密
- Jquery用法
- 系统隐式 Intent
- Nhiberate (二) 搭项目
- ACM之Java速成(2)
- Oracle11.2新特性之listagg函数 (行列转换)
- hdu 2489 最小生成树状态压缩枚举
- asp.net推送
- 设计模式六大原则——迪米特法则(LoD)
- hibernate通过配置文件生成数据库信息
- C# 网络编程 Part.1
- Storm InvalidTopologyException: null
- mysql select column default value if is null
- H5分享功能
- promise学习总结
- opencv 替换图像中的一部分
- curl wget 不验证证书进行https请求【转】
- js递归函数使用介绍
热门文章
- [loj #6003]「网络流 24 题」魔术球 二分图最小路径覆盖,网络流
- vs2008下Error LINK2005: already defined in ...的一种解决方式
- [scrapy] spider object has no attribute '_rules'
- [xampp] /usr/bin/env: php: No such file or directory
- HDU 2586.How far away ?-离线LCA(Tarjan)
- HDU 2551 竹青遍野(循环,水)
- 大型vue单页面项目优化总结
- 使用IIFE(立即执行函数)让变量私有化
- [CTSC2018]混合果汁(二分答案+主席树)
- 【分块】【线段树】bzoj3212 Pku3468 A Simple Problem with Integers