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

问题描述 投票:0回答:1

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

我希望能够在我的网站运行时动态更改语言。 你将如何做到这一点(我想避免使用会话参数或将在某个日期运行的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;
        }
    }
c# asp.net .net
1个回答
0
投票

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

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
© www.soinside.com 2019 - 2024. All rights reserved.