如何使我的静态类不那么静态?

时间:2010-02-19 17:06:26

标签: c# class-design

我有一个包含数据库逻辑的静态类。

此类用于网站,Web服务以及中间件组件的一部分。

对于此类中的每个方法,我都需要来自调用者的一段上下文信息。在网站的情况下,这将是用户信息,对于Web服务和中间件组件,这将标识呼叫服务。

我无法在配置中存储此值,因为每个用户可能会有所不同,并且我并不总是有一个httpcontext来获取此值。

我可以轻松地在这个类中的每个方法上添加一个新参数,或者我可以从静态类中更改它,以便它具有单个非静态属性,但这些解决方案似乎都不是很优雅。

那么我还没有考虑过任何其他选择吗?

2 个答案:

答案 0 :(得分:6)

如果所有方法都需要一些状态,那听起来很像你应该创建一个实例并通过构造函数传递该状态。

将设计从一堆静态方法更改为实例也可以更轻松地测试类。

答案 1 :(得分:1)

我会添加参数。它对我来说似乎并不优雅 - 你需要上下文信息,而在静态类中获取它的唯一方法就是传入它。