相关文章推荐
犯傻的铅笔  ·  “OpenCvSharp.Internal. ...·  1 年前    · 
强健的烤面包  ·  【CMake】vcpkg + ...·  1 年前    · 

原理如下:

1、利用反射进行动态加载和调用.
Assembly assembly=Assembly.LoadFrom(DllPath); //利用dll的路径加载,同时将此程序集所依赖的程序集加载进来,需后辍名.dll
Assembly.LoadFile 只加载指定文件,并不会自动加载依赖程序集.Assmbly.Load无需后辍名

2、加载dll后,需要使用dll中某类.
Type type=ass.GetType(“TypeName”);//用类型的命名空间和名称获得类型

3、需要实例化类型,才可以使用,参数可以人为的指定,也可以无参数,静态实例可以省略
Object obj = Activator.CreateInstance(type,params[]);//利用指定的参数实例话类型

4、调用类型中的某个方法:
需要首先得到此方法
MethodInfo mi=type.GetMethod(“MehtodName”);//通过方法名称获得方法

5、然后对方法进行调用,多态性利用参数进行控制
mi.Invoke(obj,params[]);//根据参数直线方法,返回值就是原方法的返回值

以下摘自MSDN

http://msdn.microsoft.com/en-us/library/a89hcwhh.aspx

<Examples:GridViewExample x:Class="Telerik.Windows.Examples.GridView.FirstLook.Example" xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" ...
RT , 近期开发Client端,希望通过 插件 式开发,降低耦合度说起来太高端,主要还是为了将需求变更的影响降低,为后续功能升级做好铺垫,通过 加载 dll 的方式 加载 各个模块或页面,更新时主需要更新 dll 就好. 1.定义接口类 namespace Songqw.Net.Plugins.Interface public interface IPluginMember
我最近做的软件,需要检测 dll 或exe是否混淆,需要反射获得类名,这时发现,C#可以 加载 DLL ,但不能卸载 DLL 。于是在网上找到一个方法,可以 动态 加载 DLL ,不使用时可以卸载。 我在写一个 WPF 程序,发现可以通过 Assembly.Load 加载 DLL ,但是如何卸载 DLL ?下面就来说下如何卸载。 看到 Assembly.Load 是把 DLL 加载 到当前程序集,这句话,我就想到了我们的主程序集和当前的不同,那么可以 加载 到当前不会影响主程序。那么如何新建一个程序集?他是否可以卸载,答案是可以的。
这两天在 WPF 开发的学习中接触到 Dll 文件的创建与调用,觉得挺有用,于是整理了一下,希望和大家交流也希望大家提出宝贵建议。 首先创建 dll 项目,打开vs,选择文件->新建->项目,在windows桌面选项找到 dll 项目选择创建 新建test.h和test.cpp test.h用于编写函数方法的声明,test.cpp用于编写函数方法实现 test.h: #pragma once #if...
因为项目需要把所使用的窗体和业务完全分离开,实现 动态 加载 ,并可通过配置保证相同的业务中用不同的界面去展示,还要方便UI和业务单独更新这些繁琐的条件,就试着用 动态 加载 的方式去 加载 dll 中窗体所需要的样式,在网上查了好久也没找到自己想要的东西, WPF 中提供的资源文件 加载 使用的Uri,用这个有个弊端,就是必须要知道文件的准确路径,然后通过Uri指定绝对或相对的地址进行 加载 资源,可我把样式单独封装在了一个 dll 中引用就很麻烦。 因为有可能放在执行目录下不同的文件夹中,搞了好久,身心疲惫啊 那能不能换个思路呢,我