c# 动态加载dll和添加引用dll区别在于哪里
答案:2 悬赏:30 手机版
解决时间 2021-01-27 05:41
- 提问者网友:溺爱和你
- 2021-01-26 05:45
c# 动态加载dll和添加引用dll区别在于哪里
最佳答案
- 五星知识达人网友:神也偏爱
- 2021-01-26 06:23
动态记载DLL的特点:
利用反射进行动态加载和调用.
Assembly assembly=Assembly.LoadFrom(DllPath); //利用dll的路径加载,同时将此程序集所依赖的程序集加载进来,需后辍名.dll
添加引用的特点:
可以直接调用
A a=new A();
a.say("51pansou");追问利用dll的路径加载,需要把这个dll放到工程下吗,我看到的都是直接写dll文件名,没有什么路径设置的啊追答对的,需要把这个dll放到当前工程下面 建议你下载 微软的PetShop 源码看看
利用反射进行动态加载和调用.
Assembly assembly=Assembly.LoadFrom(DllPath); //利用dll的路径加载,同时将此程序集所依赖的程序集加载进来,需后辍名.dll
添加引用的特点:
可以直接调用
A a=new A();
a.say("51pansou");追问利用dll的路径加载,需要把这个dll放到工程下吗,我看到的都是直接写dll文件名,没有什么路径设置的啊追答对的,需要把这个dll放到当前工程下面 建议你下载 微软的PetShop 源码看看
全部回答
- 1楼网友:逐風
- 2021-01-26 06:39
如果说区别,就是有些时候应用程序根本不可能预先知道需要访问的DLL,所以无法引用。
例如你写一个”快递单处理流程“软件,但是你不知道到底有几百种快递单,你可以在你的程序中写一个通用的快递单的接口(从中可以读取布局的模式信息,例如读取BitImage类型的底图,读取各个业务数据的文本框的坐标位置,等),并且写两种具体的快递单作为测试。
可是实际使用时,另外有198种快递单,怎么办?这就需要用一个配置文件,将其它快递单”应该从哪一个名称的DLL中的什么类型(显然全都实现了你的接口)取得“信息一一列出来,这样才能让你的程序真正发挥价值。
这种扩展设计,可能就需要动态加载DLL。
因此这取决你是懂设计的人,还是不懂设计的人。
没有必要动态加载DLL的时候,我们当然去动态调用它,而应该直接在工程中引用它。只有在必要的时候才动态加载DLL。追问能否解释下什么时候是没必要动态加载的时候吗?
例如你写一个”快递单处理流程“软件,但是你不知道到底有几百种快递单,你可以在你的程序中写一个通用的快递单的接口(从中可以读取布局的模式信息,例如读取BitImage类型的底图,读取各个业务数据的文本框的坐标位置,等),并且写两种具体的快递单作为测试。
可是实际使用时,另外有198种快递单,怎么办?这就需要用一个配置文件,将其它快递单”应该从哪一个名称的DLL中的什么类型(显然全都实现了你的接口)取得“信息一一列出来,这样才能让你的程序真正发挥价值。
这种扩展设计,可能就需要动态加载DLL。
因此这取决你是懂设计的人,还是不懂设计的人。
没有必要动态加载DLL的时候,我们当然去动态调用它,而应该直接在工程中引用它。只有在必要的时候才动态加载DLL。追问能否解释下什么时候是没必要动态加载的时候吗?
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯