Como lidar com variáveis ??estáticas em uma biblioteca que é usada tanto para desktop e web?

StackOverflow https://stackoverflow.com/questions/1912890

  •  19-09-2019
  •  | 
  •  

Pergunta

Eu tenho alguns C # biblioteca de classes que fazem uso de variáveis ??estáticas. Eu uso essas classes de biblioteca, tanto para aplicações desktop e web. O problema é que, como eu só descobri, variáveis ??estáticas não ir para baixo tão bem em um servidor web; os valores são compartilhados em todas as sessões que utilizam a web site!

Como posso preservar as características de uma variável estática para uso em meus aplicativos de desktop, enquanto certificando-se de que cada sessão no meu servidor web tem seus próprios valores independentes para estas variáveis ??- mas dentro da própria sessão, ele ainda realmente se comporta como um estático?

Foi útil?

Solução

valores de variáveis ??estáticas são compartilhadas entre os tópicos em um domínio de aplicação. Em um aplicativo ASP.NET a maneira recomendada para armazenar dados que está relacionado apenas para o usuário atual é o Session .

Se você pode modificar o código desse biblioteca compartilhada eu aconselho que você extraia uma interface fora destas variáveis ??estáticas que irá fornecer um mecanismo para armazenar valores. Isso permitirá que cada aplicativo para fornecer sua própria implementação. Para uma aplicação de janelas que você poderia usar uma implementação que usa internamente uma variável estática. Para uma aplicação ASP.NET você poderia usar o Session. Mas em todos os casos, expõe apenas uma interface. Isto também terá o efeito colateral positivo de tornar o seu código mais fácil de teste de unidade.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top