原理如下:
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
中引用就很麻烦。
因为有可能放在执行目录下不同的文件夹中,搞了好久,身心疲惫啊
那能不能换个思路呢,我