随便聊聊

随便聊聊 · 135 次浏览
H-D-G 创建于 2024-07-22 23:11

之所以知道Quicker内部的一些类型和方法就是利用了反编译工具,比如dnSpy(实际上做的也是类似这个动作的工作,大致是根据给定的C#程序集进行反编译,然后就可以知道程序集下有哪些类型,类型下有哪些方法、字段、属性……),这些想必在你写完这个动作后都了解得差不多了

至于我的代码不好理解,纯粹是一开始就没有想到会有人来看我写的屎山,也几乎没有考虑后续维护,所以可读性很差

说起来抄书侠大佬的智核中有关反射(根据你提到的"字段"猜测的)的子程序部分也大概率是我编写的😂(和抄书侠大佬简单聊过,ta好像不太熟悉C#)

然后是关于表达式引擎和程序集编译的区别,你理解得没有什么问题,这两个确实是独立的环境。

  • 表达式转程序集需要进行类型的强转,而程序集的类型到表达式就不需要
  • 表达式不支持注册事件是因为库本身的限制,并不是语法错误之类的,这个我之前也研究了好久

我的建议是,如果代码量大的话(以及涉及窗口之类的需要注册大量命名空间的情况),就不要用表达式引擎了,完全是在折磨自己,因为EvalExpression本身就是一个轻量化的脚本引擎。

如果你还有什么疑问也可以在下面回复我或者加我QQ,我知道的就尽量解答。Quicker在这方面的学习资源确实比较稀缺,我入坑Quicker不算久,了解得也有限,经验不足,可以一起交流学习一下😊


回复内容
H-D-G 2024-07-22 23:13
#1

附dnSpy使用截图:这里以最经典的 ActionExecuteContext 为例(也就是表达式中的_context)


H-D-G 2024-07-22 23:20
#2

说起来学习的经历和你很像,之前我也总是一个人研究,我当时是学习Cea大佬的一些动作,他写的很好,就是Demo太少,靠Demo简单入门后就只能自己一步步试错了

H-D-G 2024-07-22 23:52
#3

Demo:注册托盘图标 - by H-D-G

这个Demo里的【表达式_ExpressionHelper】子程序是我封装的表达式常用操作,或许对你有些帮助,Demo也演示了这个子程序的使用

回复主贴