我有一个c#方法按特定顺序运行某些代码块。我想传递一个布尔参数:“IsRunningInReverse”,它将颠倒代码块的运行顺序?
我可以创建2个私有方法,只是以正常和反向顺序调用语句,但我想知道是否有更好的方法来实现它?
我正在考虑创建委托(Action<>)并将它们存储在List中,然后布尔“IsRunningInReverse”将确定我是按升序还是降序运行列表,但我不知道是否这是最干净的解决方案。
非常感谢任何输入。
谢谢!
答案 0 :(得分:2)
您的解决方案对我来说似乎很好。
使用Action
s将是代表的惯用现代C#对象包装器,您可以轻松地操作它们。
将它们放入列表很简单,可以满足您的需求(逆序),甚至更多(任意重新排序)
也许更复杂的东西值得一些考虑:你需要共享数据吗?
处理这个问题应该不会太难,但你需要更多的结构(例如设计一些数据共享类。
如果您想要更进一步,一旦您对解决方案感到更放松,也许可以了解expression trees。
这将成为操纵不同操作/操作的强大工具。但是要注意,存在很大的学习差距,它比动作列表复杂得多。如果您只是想要撤消操作,我仍然认为您的List<Action>
想法更多 clean ,因为它更加简单和可读。我只是觉得值得一提。
答案 1 :(得分:0)
我该怎么做: 让你的“步骤”分开的功能。 制作任务字典和“等级”。 然后根据你的目标排序asc / desc。