我一直在重新组织我的C#代码,发现在处理本地变量时,参数列表变得越来越长尤其是当你需要从调用栈中的上层传递本地变量时。例如,我有一些使用Linq to sql的复杂代码。我在过程的早期实例化了数据上下文,并在整个过程中使用它。然而,在重构之后,我发现我需要将这个DC和其他各种状态变量传递到所有的子方法中。
当然,其中一个解决方案是将这些本地变量转换为成员变量,但这会使整个类非线程安全,并且在处理异步I/O时,这意味着必须通过锁定和互斥来保证安全性。在处理本地变量方面,您的最佳做法是什么?是让他们成为成员?还是携带状态负担?或者您会采取其他措施?
编辑:我不确定您需要哪些更多细节。我不想倾倒一堆代码,因为出于说明的目的,我不得不展示一组非常复杂的过程。我有许多本地变量,例如Linq to Sql DC、各种处理阶段、大量原始数据的更新和处理写入数据库的各种阶段。我考虑创建一个状态上下文并传递它,但我觉得这有点hackish,尽管这恰恰是Linq to SQL DC的作用。
当然,其中一个解决方案是将这些本地变量转换为成员变量,但这会使整个类非线程安全,并且在处理异步I/O时,这意味着必须通过锁定和互斥来保证安全性。在处理本地变量方面,您的最佳做法是什么?是让他们成为成员?还是携带状态负担?或者您会采取其他措施?
编辑:我不确定您需要哪些更多细节。我不想倾倒一堆代码,因为出于说明的目的,我不得不展示一组非常复杂的过程。我有许多本地变量,例如Linq to Sql DC、各种处理阶段、大量原始数据的更新和处理写入数据库的各种阶段。我考虑创建一个状态上下文并传递它,但我觉得这有点hackish,尽管这恰恰是Linq to SQL DC的作用。