使用动态加载dll方式加载规则并执行,指教。

大刘0417 2014-07-24 02:51:17
我将不同的规则写成不同的dll,检测时根据不同的数据类型加载对应的dll文件,所有执行(包括计算、检测)都在dll类库内部进行,只返回执行的结果。如果有新的数据类型及规则,只需另写dll规则库,不必修改主程序,这个思路是否可行,比用xml保存规则是否更科学。

还未开始写代码,请各路大神帮我确定一下大方向,然后进入死抠阶段。
...全文
167 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
大刘0417 2014-07-25
  • 打赏
  • 举报
回复
引用 9 楼 sp1234 的回复:
[quote=引用 2 楼 pengwei0417 的回复:] 关键是如何才能处理好这个规则。 规则是很乱的,什么样的都有,比如有需要正则表达式的、有的需要计算时间差的、有的是要进行全角字符判断的等等,而且规则是动态的,现在写一个,第二天可能还要再添加一个,我的目的就是想写一个通用的规则处理的东西比如是A,不论什么规则都能通过这个A来处理,主程序使用A来动态加载一切规则。 文笔不好,不知说明白没有。
所谓“动态加载”,你要说出一点具体的词儿来。例如说,你会加载Assembly并且Activator.CreateInstance,或者还是是什么别的做法。但凡你真的会“动态加载”,就不会只说不练。[/quote] 听取意见,正在练习Assembly、Activator.CreateInstance。
  • 打赏
  • 举报
回复
引用 2 楼 pengwei0417 的回复:
关键是如何才能处理好这个规则。 规则是很乱的,什么样的都有,比如有需要正则表达式的、有的需要计算时间差的、有的是要进行全角字符判断的等等,而且规则是动态的,现在写一个,第二天可能还要再添加一个,我的目的就是想写一个通用的规则处理的东西比如是A,不论什么规则都能通过这个A来处理,主程序使用A来动态加载一切规则。 文笔不好,不知说明白没有。
所谓“动态加载”,你要说出一点具体的词儿来。例如说,你会加载Assembly并且Activator.CreateInstance,或者还是是什么别的做法。但凡你真的会“动态加载”,就不会只说不练。
  • 打赏
  • 举报
回复
学习一下 .net framework 的 MEF 框架。 有的人只会点 c# 基本语法,不去学习和了解 .net framework 。这根本不算是 .net 编程。
tanta 2014-07-24
  • 打赏
  • 举报
回复
这个可行,用接口就可以实现。 问题是你这样做等于是将算法和数据都固定死了,如果你有这个需要可以这样来写,比如说,强制买家定期到你这升级。。。 如果想以灵活的方式实现算法,还是用xml什么的吧。
大刘0417 2014-07-24
  • 打赏
  • 举报
回复
感谢回贴,连发了几贴其实都是同样的问题。
我要好好的思考一下了。

深度思考中......
於黾 2014-07-24
  • 打赏
  • 举报
回复
还是那个问题. 不管你放哪,想实现任意未知的校验方式是不可能的. 你需要预先做出多种校验,然后将参数保存到一个地方(你爱用文本,还是xml,还是dll,其实都无所谓的) 或者你将规则写到dll里,而dll的名称配置到xml里 这样程序先去找到底要调用哪些dll,然后一个一个的去校验,这样主程序就不用改了,添加新dll并修改xml就行了.
大刘0417 2014-07-24
  • 打赏
  • 举报
回复
引用 3 楼 CGabriel 的回复:
写个接口,然后所有 dll 都实现这个接口。
对于接口,一直没有很好的理解,能进一步说明吗?
CGabriel 2014-07-24
  • 打赏
  • 举报
回复
写个接口,然后所有 dll 都实现这个接口。
大刘0417 2014-07-24
  • 打赏
  • 举报
回复
引用 1 楼 bdmh 的回复:
没必要,规则写到配置文件或数据库,你可以单独写一个dll,用来处理规则,并返回结果给调用方
关键是如何才能处理好这个规则。 规则是很乱的,什么样的都有,比如有需要正则表达式的、有的需要计算时间差的、有的是要进行全角字符判断的等等,而且规则是动态的,现在写一个,第二天可能还要再添加一个,我的目的就是想写一个通用的规则处理的东西比如是A,不论什么规则都能通过这个A来处理,主程序使用A来动态加载一切规则。 文笔不好,不知说明白没有。
bdmh 2014-07-24
  • 打赏
  • 举报
回复
没必要,规则写到配置文件或数据库,你可以单独写一个dll,用来处理规则,并返回结果给调用方
这个配置是根据网上“最N vim配置“修正了一些错误和增加了一些我认为方便的设置,功能确实很强,感谢Amix,本人保留他(她)的说明,里面的配置都有说明,很容易就懂,建议大家好好去看一遍,包你有长进。 运行环境 ubuntu 9.04 i686(8.10 64位也OK) vim 7.2 部分功能说明: 1。打开的文件列在右边窗口 2。通过方向键切换打开的文档, 相当于:bn,:bp 3。底端有个mini窗口,类似emacs 4。支持tab自动补全 包括用:e打开文件是的文件名补全和关键字的自动补全 5。显示行号 6。指定字体 7。F11全屏 windows下才有效,因为我使用Linux,所以给注释掉,如果你使用的是windows请取消.vimrc 148行的注释 然后复制gvimfullscreen.dll到windows/system32或者winnt/system32下。 8。html标签自动完成 比如输入自动完成并且自动缩进 9。php的调试。(windows下有效) 编写好php以后,:make 运行PHP程序 :cl 显示错误提示包括行号,enter以后还会定位到出错行 :cl! 显示执行结果 嘿嘿,很不错吧。我用起来很不错 10。对从c/c++文件自动生成说明文档 11。空格(space)为查找相当于/ 12. 自动加载vim配置文件 。。。还有很多自己可以去看里面的.vimrc内容,当然也建议你去读一遍里面的内容,有新大陆的发现记得留言告诉我和大家 安装步骤 Linux: 1。备份自己的配置 $ tar cjvf vim_bk.tar.bz2 ~/.vimrc ~/.vim #备份自己原有的配置,万一我的配置在你的系统上水土不服也好恢复嘛 2。请解压指自己的主目录 $ tar jxvf vim.tar.bz2 -C ~/ #解压缩到主目录 $ ls -al ~ #查看 3。建议浏览一下配置文件 vim ~/.vimrc 4。运行gvim就看看效果吧 gvim Windows: 1。备份原有的设置,怎么备份就自己去弄吧 2。解压vim.tar.bz2(怎么解压,当然安装winrar,然后就双击) 3。压缩包里面.vim 对应$VIMRUNTIME/vimfiles,$VIMRUNTIME,就是vim的安装目录啦,默认安装在c:\program files/Vim 4。改.vimrc 为_vimrc 有任何指教,意见,批评等请发伊妹儿 michael.yang2000#gmail.com.

110,539

社区成员

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

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

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