摘自:http://www.knowsky.com/539917.html
反射的作用:
1. 可以使用反射动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型2. 应用程序需要在运行时从某个特定的程序集中载入一个特定的类型,以便实现某个任务时可以用到反射。3. 反射主要应用与类库,这些类库需要知道一个类型的定义,以便提供更多的功能。1 需要反射的DLLusing System;namespace Webtest{public class ReflectTest{public ReflectTest(){}public string WriteString(string s){return "欢迎您," + s;}//静态函数public static string WriteName(string s){return "欢迎您光临," + s;}//不带参数的函数public string WriteNoPara(){return "您使用的是无参数方法";}}}应用于反射的例子-在aspNET页面中加入以下函数:public void test1(){System.Reflection.Assembly ass;Type type ;object obj;try{ass = System.Reflection.Assembly.LoadFile(@"d:\TestReflect.dll");//要绝对路径type = ass.GetType("Webtest.ReflectTest");//必须使用 名称空间+类名称System.Reflection.MethodInfo method = type.GetMethod("WriteString");//方法的名称obj = ass.CreateInstance("Webtest.ReflectTest");//必须使用名称空间+类名称string s = (string)method.Invoke(obj,new string[]{"jianglijun"}); // 实例方法的调用或:string s = (string)method.Invoke(obj,Object[] parametors = new Object[]{"param"});Response.Write(s+"<br>");method = type.GetMethod("WriteName");//方法的名称s = (string)method.Invoke(null,new string[]{"jianglijun"}); // 静态方法的调用Response.Write(s+"<br>");method = type.GetMethod("WriteNoPara");//无参数的实例方法s = (string)method.Invoke(obj,null);Response.Write(s+"<br>");method = null;}catch(Exception ex){Response.Write(ex+"<br>");}finally{ass = null;type = null;obj = null;}}
分享到:
相关推荐
可以使用C#的反射技术进行动态加载外部C#自己所写的Dll。进行项目整合。实现动态调用。该列子如果有什么问题可以留言
1.不使用反射机制就可以动态地创建类型的实例,将类型绑定到现有对象,或从现有对象中获取类型 2.应用程序需要在运行时从某个特定的程序集中载入一个特定的...4.本源码只是一个DEMO,动态调用dll的方法非常简单实用。
C# 反射实例代码 接口方式动态加载dll方式
反射的加载与卸载,适用于需要经常变换更新的地方。 代码里文件路径是编译的路径(需要替换为自己的存放路径),我是将DLL拷贝到EXE文件夹下测试的,在没有卸载完,拷贝覆盖不了,卸载后就可以覆盖了。
学习反射.调用反射内的方法 C# 加载Dll 使用反射 调用对应的方法公开方法,私有方法,泛型方法
使用反射(Reflect)获取dll文件中的类型并调用方法,具体内容如下 需引用:System.Reflection; 1. 使用反射(Reflect)获取dll文件中的类型并调用方法(入门案例) static void Main(string[] args) { //dll文件...
本例子采用反射机制调用DLL的类方法进行展示。
C# SQL Server数据库操作DLL,提供数据库链接、读取DataSet、DataTable,执行添加、修改、删除数据。附源码项目和dll文件
在加载DLL时,出现了如下的异常:未能加载文件或程序集“DMC3000, Version...以上这篇C#中调用DLL时未能加载文件或程序集错误的处理方法(详解)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支
主要通过xml配置,来获取所有要动态加载的dll,然后通过反射机制来调用dll中的类及其方法。 using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Reflection; ...
C#调用Delphi编写的非托管Dll的例子源程序。mydll.dll是使用delphi编写的,参数均为Pchar型。
反射调用没有释放动态链接库的方法,因此在开发过程中若加载了某DLL,则必须关闭平台才能重新生成DLL覆盖,非常不方便,因此先将dll读入内存并保存为流对象
通过C#程序实现dll动态库的加载,并能通过C#的反射机制,读取动态库中所有的方法,并且能够在自己的程序里调用动态库中的相关方法。
包含一个form类 直接添加 利用反射动态加载dll 可以查到dll内类的名称 退出时调用委托 参数为选中类的名称。
1)引用PlugsRoot.dll,动态dll插件开发,放到Plugs目录下即可加载,类似Eclipse插件: using PlugsRoot; [PluginInfo("动态插件名", "1.0.0.1", "作者", "分组", false)] public partial class PlugForm : PlugRoot...
(c) 可以不断扩展添加python或.net开源dll,在python脚本中调用。 (3)命令行调用支持: IronPythonTest.exe -log logPath ;执行命令后输出日志全路径,默认Log目录 -py filePath ;执行python脚本全路径 -t ...
(c) 可以不断扩展添加python或.net开源dll,在python脚本中调用。 (3)命令行调用支持: IronPythonTest.exe -log logPath ;执行命令后输出日志全路径,默认Log目录 -py filePath ;执行python脚本全路径 -t ...
1)引用PlugsRoot.dll,动态dll插件开发,放到Plugs目录下即可加载,类似Eclipse插件: using PlugsRoot; [PluginInfo("动态插件名", "1.0.0.1", "作者", "分组", false)] public partial class PlugForm : PlugRoot...