反射调指定文件夹下的文件,如何限制文件加载的范围???

zsgbox 2012-03-19 03:33:49
用反射调另一个文件夹下的DLL文件,那个DLL依赖的相关DLL都在同文件夹下,但我程序本身根目录下也有几个同名文件,反射时就不会走指定的文件夹,而是直接加载了我本地根目录下的文件,请问,有没有办法限制我反射加载时必须加载指定的文件夹下的,即便我程序根目录下有,我也不加载?
...全文
138 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
shaofei830927 2012-03-19
  • 打赏
  • 举报
回复
指定目录 不就可以家在任意dll了么 一般从你当前应用下的路径去定位 ../就是上一级 /就是下一级 加上Directory 或者 File可以定位到任意位置 的任意个文件
Code従業員 2012-03-19
  • 打赏
  • 举报
回复
使用反射来做插件,效果拔群啊。
编译器上

运行时


这样如何后边客户还有什么新的扩展功能,完全可以再源程序一字不改的基础上实现
好东西啊,呵呵
Code従業員 2012-03-19
  • 打赏
  • 举报
回复
问题1、
可以使用
Directory.GetFiles(Directory.GetCurrentDirectory() + "\\Plugins", "*.dll")
指定文件名
问题2、
反射的DLL类继承的接口不同即可区分,DLL都是每次遍历的,筛选出继承指定接口的类进行处理
reflectType.FindInterfaces(筛选标志,"接口名")
zsgbox 2012-03-19
  • 打赏
  • 举报
回复
其实一次反射还好,麻烦就麻烦在如果是二次反射,就不好处理了,即主程序反射了一个文件夹下的的DLL,而这个DLL又反射自己目录下的一个DLL,就报文件依赖存在问题,而依赖的文件的确是存在同目录下的。
zsgbox 2012-03-19
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 sinitek123 的回复:]

debug的时候默认是根目录的 ,直接发布测试就知道了
[/Quote]

您说的意思是不要Debug版本,如果是Release版就不存在这个问题?
sinitek123 2012-03-19
  • 打赏
  • 举报
回复
debug的时候默认是根目录的 ,直接发布测试就知道了
sinitek123 2012-03-19
  • 打赏
  • 举报
回复
你反射读的文件夹 debug下 应该是本地根目录下的文件 我的反射是可以用读反射的文件夹下的文件的 不读debug目录的
whowhen21 2012-03-19
  • 打赏
  • 举报
回复
反射的时候指定dll路径即可。

111,126

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧