利用反射动态从程序集dll执行方法和属性
程序结构:

//获取程序集
Assembly asb = Assembly.LoadFrom(path);//path为程序集的物理路径
//获取程序集下面的Student类
Type document = asb.GetType("DAL.Student");//参数必须是命名空间+类名,否则会报错。
//实例化Document类对象(有参数的话需要传递object参数)
object docObj = Activator.CreateInstance(document);
//获取Document类中的方法
MethodInfo mi = document.GetMethod("GetStudentName");
//参数
object[] parameter = new object[] { "李四" };
string s= mi.Invoke(docObj, parameter).ToString();//输出方法的返回值:李四
FieldInfo pi = document.GetField("Name");//获取Document类中的属性
string name= pi.GetValue(docObj).ToString();//输出方法的属性:张三
2. // 静态方法的调用
method = type.GetMethod("WriteName");//获得静态方法的名称
s = (string)method.Invoke(null,new string[]{"jianglijun"});//第一个参数为null,因为是静态的。第二个是方法的参数。是object数组。
3.//无参数的实例方法
method = type.GetMethod("无参方法名称");
s = (string)method.Invoke(obj,null);
4.给封装属性赋值
System.Reflection.PropertyInfo propertyInfo = type.GetProperty("属性名称"); //获取指定名称的属性
int value_Old = (int)propertyInfo.GetValue(obj, null); //获取属性值。第一个参数是对应类的实例
Console.WriteLine(value_Old);
propertyInfo.SetValue(obj, 5, null); //给对应属性赋值。第一个类是对应类的实例。
利用反射动态从程序集dll执行方法和属性的更多相关文章
- C# 利用反射动态加载dll
笔者遇到的一个问题,dll文件在客户端可以加载成功,在web端引用程序报错.解决方法:利用反射动态加载dll 头部引用加: using System.Reflection; 主要代码: Assembl ...
- .Net Core利用反射动态加载类库的方法(解决类库不包含Nuget依赖包的问题)
在.Net Framework时代,生成类库只需将类库项目编译好,然后拷贝到其他项目,即可引用或动态加载,相对来说,比较简单.但到了.Net Core时代,动态加载第三方类库,则稍微麻烦一些. 一.类 ...
- C# 知识点笔记:IEnumerable<>的使用,利用反射动态调用方法
IEnumerable<T>的使用 创建一个IEnumerable对象 List<string> fruits = new List<string> { " ...
- C# 利用反射动态创建对象——带参数的构造函数和String类型
C# 利用反射动态创建对象——带参数的构造函数和String类型 最近笔者有一个想法需要利用反射动态创建对象(如string,int,float,bool,以及自定义类等)来实现,一直感觉反射用不好, ...
- C#利用反射动态创建对象 带参数的构造函数和String类型 (转载)
最近笔者有一个想法需要利用反射动态创建对象(如string,int,float,bool,以及自定义类等)来实现,一直感觉反射用不好,特别是当构造函数带参数的时候.MSDN上给出的例子十分复杂,网上的 ...
- C# 利用反射动态创建对象[摘录]
摘自:http://hi.baidu.com/yangyuhang/blog/item/f12ea90e13f214e336d12250.html 在VS.Net中,有很多种方法动态调用对象的构造函数 ...
- java 中利用反射机制获取和设置实体类的属性值
摘要: 在java编程中,我们经常不知道传入自己方法中的实体类中到底有哪些方法,或者,我们需要根据用户传入的不同的属性来给对象设置不同的属性值,那么,java自带的反射机制可以很方便的达到这种目的,同 ...
- C#利用反射动态调用DLL并返回结果,和获取程序集的信息
反射的基本概念: .Net Framework 中提供了反射机制,可以再加载程序运行时,动态获取和加载程序集,并且可以获取到程序集的信息 创建Assembly和Entity两个程序集,在Assembl ...
- StructureMap.dll 中的 GetInstance 重载 + 如何利用 反射动态创建泛型类
public static T GetInstance<T>(ExplicitArguments args); // // Summary: // Creates a new instan ...
随机推荐
- 从拉动APP下载谈运营
声明:这篇文章是前京东产品运营刘玮东的作品,我转过来主要方便以后自己温故,也怕这样的好文给漏或者找不到了. 当时面临的新课题就是如何用H5拉动APP的下载,背景是我们的渠道和发动传播的第一波用户不够多 ...
- HDU/5499/模拟
题目链接 模拟题,直接看代码. £:分数的计算方法,要用double; #include <set> #include <map> #include <cmath> ...
- java 数据结构 队列的实现
java 数据结构队列的代码实现,可以简单的进行入队列和出队列的操作 /** * java数据结构之队列的实现 * 2016/4/27 **/ package cn.Link; import java ...
- ACM课程学习总结
ACM课程学习总结报告 通过一个学期的ACM课程的学习,我学习了到了许多算法方面的知识,感受到了算法知识的精彩与博大,以及算法在解决问题时的巨大作用.此篇ACM课程学习总结报告将从以下方面展开: 学习 ...
- 转:Selenium Grid深入学习
应网友要求写一个用Selenium Grid控制多系统多浏览器并行执行test case的例子. 因为我这里有两台机子,我打算这样演示: 一台机子启动一个作为主点节的hub 和 一个作为次节点的hub ...
- UVALive 6885 Flowery Trails
两次SPFA #include<cstdio> #include<cstring> #include<cmath> #include<vector> # ...
- C++:bitset类的使用
#include <iostream> #include <bitset> using namespace std; int main() { //初始化一个bitmap , ...
- What is “Mock You” :Raise,callback,verify [转载]
http://www.cnblogs.com/wJiang/archive/2010/02/21/1670637.html Raise 如果你说会用Setup,那么Raise就更简单了.这里注意下它是 ...
- Centos yum 安装mysql报错 No package mysql-server available.
这是因为大多数mysql-*的资源名称被mariadb-*重命名了 所以换成 yum install mariadb-server 就可以了 PS[摘自网络] MariaDB不仅仅是Mysql的一个替 ...
- STM8|STM32 看门狗使用
源:STM8|STM32 看门狗使用 STM8和STM32都配备了独立看门狗,其作用之大不言而喻.以下为STM8及STM32的独立看门狗使用例: 对于STM32单片机: #define SYS_IWD ...