在 c# 中更改静态变量"dynamically"



我有以下课程,我设置了网站上应该是"运行"语言的语言。
现在,我只是在/外面评论我想要拥有的语言在运行/调试我的项目之前选择。

我希望能够在我的网站运行时动态更改语言。
您将如何执行此操作(我想避免使用会话参数或将运行运行的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");

参考

如果要保持实现将const更改为static

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

我今天实际上看到了可能有帮助的方式:

 private const string someString="my name is {0}";
 string newString = string.Format(someString, "Didi");

最新更新