C# 如何在同时用于桌面和web的库中处理静态变量?

C# 如何在同时用于桌面和web的库中处理静态变量?,c#,asp.net,static-variables,C#,Asp.net,Static Variables,我有一些使用静态变量的C#库类。我将这些库类用于桌面和web应用程序。问题是,正如我刚刚发现的,静态变量在web服务器上运行得不太好;这些值在使用网站的所有会话中共享 如何保留静态变量的功能以供桌面应用程序使用,同时确保web服务器上的每个会话对这些变量都有自己的独立值-但在会话本身中,它的行为仍然像静态变量一样?静态变量值在应用程序域中的所有线程之间共享。在ASP.NET应用程序中,建议使用以下方法存储仅与当前用户相关的数据 如果您可以修改这个共享库的代码,我建议您从这些静态变量中提取一个接口

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


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

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


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

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


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

我知道。但我想在web和桌面上使用这些库。我正在寻找关于如何使我的库足够灵活以在这两种环境中工作的建议。我认为这个库不适合在多线程环境中使用,因为编写它的人依赖静态变量来存储用户状态。我知道。但我想在web和桌面上使用这些库。我正在寻找关于如何使我的库足够灵活以在这两种环境中工作的建议。我认为这个库不适合在多线程环境中使用,因为编写它的人依赖静态变量来存储用户状态。