如何处理用于桌面和Web的库中的静态变量?

时间:2009-12-16 07:15:37

标签: c# asp.net static-variables

我有一些使用静态变量的C#库类。我将这些库类用于桌面和Web应用程序。问题是,正如我刚刚发现的那样,静态变量在Web服务器上不会那么好;使用网站在所有会话中共享这些值!

如何保留静态变量的功能以便在我的桌面应用程序中使用,同时确保我的Web服务器上的每个会话都有自己独立的这些变量值 - 但在会话本身内,它仍然真的像一个静态?

1 个答案:

答案 0 :(得分:5)

静态变量值在应用程序域中的所有线程之间共享。在ASP.NET应用程序中,存储仅与当前用户相关的数据的推荐方法是Session

如果你可以修改这个共享库的代码,我会建议你从这些静态变量中提取一个接口,它将提供一个存储值的机制。这将允许每个应用程序提供自己的实现。对于Windows应用程序,您可以使用内部使用静态变量的实现。对于ASP.NET应用程序,您可以使用Session。但在所有情况下,您只公开一个接口。这也会产生积极的副作用,使您的代码更容易进行单元测试。