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

时间:2019-03-19 13:09:37

标签: c# asp.net .net

我在下面的课程中设置了网站上“正在运行的”语言的语言。
现在,我只是在输入/输出注释我想要选择的语言,然后再运行/调试项目。

我希望能够在我的网站运行时动态地更改语言。
您将如何做到这一点(我想避免使用会话参数或将运行的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;
        }
    }

2 个答案:

答案 0 :(得分:0)

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

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

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

但是您可以玩

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

reference

如果要保留实施,请将const更改为static

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

   ///

    public static string CurrentLanguage

答案 1 :(得分:0)

我今天实际上以这种方式看到了这可能会有所帮助:

 private const string someString="my name is {0}";

 string newString = string.Format(someString, "Didi");