我们正在开发一个 Windows 应用程序,该应用程序必须定期启动可能需要一些时间的操作。我们已经进入了让这些操作在 BackgroundWorker 上运行的模式,并为每个操作编写一个快速 WinForm,在其中您将必要的参数传递给表单,表单连接 BackgroundWorker 并进行函数调用,并且表单显示输出(进度条移动,文本填充更新等)。
现在很明显,这种形式非常千篇一律。表单副本之间真正不同的唯一部分是在哪个对象上调用哪个方法。所以我们想做的是让它成为通用的,这样我们就可以采用形式,传入一个对象(或 null 用于静态调用?),一个函数名和一个参数数组,然后让它“运行”从那里。我们已经能够通过反射做到这一点。在这种情况下,我们不喜欢反射的地方是缺乏强类型;诸如拼写错误的方法调用之类的事情在运行时被捕获,而不是编译时。现在有什么可用的东西可以使它更加优雅和健壮吗?我听说有人在谈论诸如代表和表达式树之类的东西;但我不确定前者是否适用,但我对后者仍然有些不知所措。