C#反射动态调用dll中的方法,并返回结果[转]

摘要:
最近,我在查看工厂开发模式,发现使用了反射。我以前只听说过,没怎么用过;所以我花了一些时间再次回顾它;反射的功能是动态加载一个dll(程序集),在程序集中执行一个方法,并返回结果;当然,也可以将参数命名空间程序集传递给此方法name{publicclassassembly_class{publicstringShow_Str(stringtr){if(string.IsNullO

最近在看工厂开发模式,发现用到了反射,之前只听说过也没怎么用过;所以花了点时间重新温习了一遍;

反射的作用是动态的加载某个dll(程序集),并执行该程序集中的某个方法,并返回结果;当然也可以给该方法传递参数

复制代码
namespace assembly_name  
{  
    public class assembly_class  
    {  
        public string Show_Str(string str)  
        {  
            if (string.IsNullOrEmpty(str))  
                return "你没有传参数进来";  
            else  
                return "有参数,参数是:" + str;  
        }  
    }  
}
复制代码

上边写一个测试类,名称空间是assembly_name,类名是assembly_class,类名下有个方法Show_Str参数是string类型,并且返回值是string类型;

在我本地生成了这个类,生成后的dll是App_Code.dll(这个可以根据你的情况来,不完全是App_Code.dll),接着要把这个dll添加引用到你的项目中(重要);

复制代码
//加载程序集(dll文件地址),使用Assembly类   
Assembly assembly = Assembly.LoadFile(AppDomain.CurrentDomain.BaseDirectory + "Bin/App_Code.dll");  
  
//获取类型,参数(名称空间+类)   
Type type = assembly.GetType("assembly_name.assembly_class");  
  
//创建该对象的实例,object类型,参数(名称空间+类)   
object instance = assembly.CreateInstance("assembly_name.assembly_class");  
  
//设置Show_Str方法中的参数类型,Type[]类型;如有多个参数可以追加多个   
Type[] params_type = new Type[1];  
params_type[0] = Type.GetType("System.String");  
//设置Show_Str方法中的参数值;如有多个参数可以追加多个   
Object[] params_obj = new Object[1];  
params_obj[0] = "jiaopeng";  
  
//执行Show_Str方法   
object value = type.GetMethod("Show_Str", params_type).Invoke(instance, params_obj);   
复制代码

免责声明:文章转载自《C#反射动态调用dll中的方法,并返回结果[转]》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇BZOJ1089: [SCOI2003]严格n元树VUEX下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

JSON格式转换成XML格式

第一种方法: 需要使用命名空间System.Runtime.Serialization.Json 下面有JsonReaderWriterFactory XmlDictionaryReader reader = JsonReaderWriterFactory.CreateJsonReader(Encoding.UTF8.GetBytes(sJson), X...

NPOI操作Excel简单示例

     根据网上的资料,学习了一下NPOI操作Excel的基本方法:    1、导出至Excel:标题行合并居中、设置列宽、写入列标题及数据。     public class ExportToExcel : IHttpHandler //一般处理程序ExportToExcel.ashx    {        public void ProcessRe...

Switch重构处理

public class Fun{         public void IFNumberid(int flag)          {               switch (flag)          {         case 1:...

【C#】WebApi 添加过滤器,实现对请求参数和响应内容的日志记录

filter的介绍 filter在Web API中经常会用到,主要用于记录日志,安全验证,全局错误处理等;Web API提供两种过滤器的基本类型:actionfilterattribute,exceptionfilterattribute;两个类都是抽象类,actionfilter主要实现执行请求方法体之前(覆盖基类方法OnActionExecuting...

ehcache 缓存

、通过使用API来动态的添加缓存(将缓存的配置信息通过java代码来实现而非写在配置文件) 2、通过配置文件ehcache.xml创建缓存实例 packageorg.jeecgframework.cache; importorg.jeecgframework.core.util.StringExt; public classCacheInstanc...

【学习】java下实现调用oracle的存储过程和函数

在oracle下创建一个test的账户,然后按一下步骤执行: 1.创建表:STOCK_PRICES View Code--创建表格CREATETABLE STOCK_PRICES( RIC VARCHAR(6) PRIMARYKEY, PRICE NUMBER(7,2), UPDATED DATE ); 2.插入测试数据: View...