这是我的第一篇文章,所以原谅任何错位。
我们正在开发一个ASP.Net MVC 5应用程序,为最终用户提供多种文化。
Thread.CurrentThread.CurrentCulture
和Thread.CurrentThread.CurrentUICulture
在Global.asax.cs文件的Application_AcquireRequestState()
中设置。
据我所知,对Web应用程序的每个请求都会触发一个新线程。 我创建了一个静态类,可以根据文化提供对某些日期格式字符串等的轻松访问。
我的问题是,是否有任何关于访问此静态课程的问题'来自请求线程的上下文(例如控制器)的方法和get-accessors可能具有不同的文化?静态班级有哪种文化?
答案 0 :(得分:3)
班级本身没有任何文化。它是访问具有文化的类的线程,并且线程的文化在类中使用(静态或非静态)。
Static实际上是指如何在不同的线程之间共享类的状态。您的静态类可以是无状态的(即它不存储数据,通常是辅助类型的静态类的情况),这将为您创建更少的问题。
如果您在静态类中存储任何状态,则必须小心,原因有两个:
一般来说,在多线程环境中控制对静态保存数据的访问更加困难,
如果您存储的任何数据是特定于文化的,那么在使用具有不同文化的线程时,您可能会遇到解释此数据的问题。