c# 动态加载dll和添加引用dll区别在于哪里
动态加载形式如[DllImport("dll文件")],直接引用就是添加引用不要复制的,尽量详细一点说明...
动态加载形式如[DllImport("dll文件")],
直接引用就是添加引用
不要复制的,尽量详细一点说明 展开
直接引用就是添加引用
不要复制的,尽量详细一点说明 展开
展开全部
如果说区别,就是有些时候应用程序根本不可能预先知道需要访问的DLL,所以无法引用。
例如你写一个”快递单处理流程“软件,但是你不知道到底有几百种快递单,你可以在你的程序中写一个通用的快递单的接口(从中可以读取布局的模式信息,例如读取BitImage类型的底图,读取各个业务数据的文本框的坐标位置,等),并且写两种具体的快递单作为测试。
可是实际使用时,另外有198种快递单,怎么办?这就需要用一个配置文件,将其它快递单”应该从哪一个名称的DLL中的什么类型(显然全都实现了你的接口)取得“信息一一列出来,这样才能让你的程序真正发挥价值。
这种扩展设计,可能就需要动态加载DLL。
因此这取决你是懂设计的人,还是不懂设计的人。
没有必要动态加载DLL的时候,我们当然去动态调用它,而应该直接在工程中引用它。只有在必要的时候才动态加载DLL。
例如你写一个”快递单处理流程“软件,但是你不知道到底有几百种快递单,你可以在你的程序中写一个通用的快递单的接口(从中可以读取布局的模式信息,例如读取BitImage类型的底图,读取各个业务数据的文本框的坐标位置,等),并且写两种具体的快递单作为测试。
可是实际使用时,另外有198种快递单,怎么办?这就需要用一个配置文件,将其它快递单”应该从哪一个名称的DLL中的什么类型(显然全都实现了你的接口)取得“信息一一列出来,这样才能让你的程序真正发挥价值。
这种扩展设计,可能就需要动态加载DLL。
因此这取决你是懂设计的人,还是不懂设计的人。
没有必要动态加载DLL的时候,我们当然去动态调用它,而应该直接在工程中引用它。只有在必要的时候才动态加载DLL。
追问
能否解释下什么时候是没必要动态加载的时候吗?
展开全部
动态记载DLL的特点:
利用反射进行动态加载和调用.
Assembly assembly=Assembly.LoadFrom(DllPath); //利用dll的路径加载,同时将此程序集所依赖的程序集加载进来,需后辍名.dll
添加引用的特点:
可以直接调用
A a=new A();
a.say("51pansou");
利用反射进行动态加载和调用.
Assembly assembly=Assembly.LoadFrom(DllPath); //利用dll的路径加载,同时将此程序集所依赖的程序集加载进来,需后辍名.dll
添加引用的特点:
可以直接调用
A a=new A();
a.say("51pansou");
追问
利用dll的路径加载,需要把这个dll放到工程下吗,我看到的都是直接写dll文件名,没有什么路径设置的啊
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询