在c#中“动态”更改静态变量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在c#中“动态”更改静态变量相关的知识,希望对你有一定的参考价值。

我有下面的课程,我在网站上设置了什么语言应该是“运行”语言。 现在我只是在运行/调试我的项目之前输入/输出我想要选择的语言。

我希望能够在我的网站运行时动态更改语言。 你将如何做到这一点(我想避免使用会话参数或将在某个日期运行的cookie来解决它)

public class LanguageCodes
{
    public const string DenmarkCode = "DK";
    public const string SwedenCode = "SE";
}

public class LanguageFactory
{
    public static readonly string CurrentLanguage =
     LanguageCodes.DenmarkCode; 
   //LanguageCodes.SwedenCode;

    public static AbstractLanguage Current {
        get {
            switch (CurrentLanguage)
            {
                case LanguageCodes.DenmarkCode: return new LanguageDK();
                case LanguageCodes.SwedenCode: return new LanguageSE();
            }
            return null;
        }
    }
答案

在您当前的实现中,您不能这样做。

const是编译已知变量,即使使用反射也无法编辑。

这样做的唯一方法是编写一个程序,可以编辑自己的源代码并重新编译自己。我想你不想这样做。

但是你可以玩

Thread.CurrentThread.CurrentCulture = new CultureInfo("pt-BR");

reference

如果你想保持你的实施改变conststatic

   public class LanguageCodes
    {
        public static string DenmarkCode = "DK";
        public static string SwedenCode = "SE";
    }

   ///

    public static string CurrentLanguage

以上是关于在c#中“动态”更改静态变量的主要内容,如果未能解决你的问题,请参考以下文章

支持动态或静态片段的不同屏幕尺寸?

如何在片段着色器中将分辨率从静态更改为动态

在C语言中,啥是动态存储,啥是静态存储?

C语言动态变量和静态变量的区别

自动存储,静态存储和动态存储

图解简单C程序的运行时结构