假设我有很多资源文件:a.resx
,b.resx
和c.resx
我这样用它:
groupSettingsLogin.Caption = Resources.a.login_caption;
或
groupSettingsLogin.Caption = Resources.b.login_caption;
如果我有一个全局变量public String ResourceName,并且我在start时将其设置为某个值:
MyGlobalVariables.ResourceName = "a";
然后我可以动态地将资源称为:
groupSettingsLogin.Caption = Resources."MyGlobalVariables.ResourceName".login_caption;
我知道上面这行不正确但有没有办法达到这样的目的? 或者如果没有,还有另一种方法吗?
答案 0 :(得分:0)
您可以使用此
var resourceManager = new ResourceManager("YourNamespace." + MyGlobalVariables.ResourceName, Type.GetType("YourNamespace." + MyGlobalVariables.ResourceName).Assembly);
var login_caption = resourceManager.GetString("login_caption", CultureInfo.CurrentCulture);
我已经检查过这个工作正常。以前的答案不正确
答案 1 :(得分:0)
试试这个:
// MyGlobalVariables.Resources is `dynamic`
MyGlobalVariables.Resources = Resources.a;
groupSettingsLogin.Caption = MyGlobalVariables.Resources.login_caption;
答案 2 :(得分:0)
查看生成的代码。在那里你可以看到它本身如何访问底层数据。应该很容易。单方法调用。生成的属性下面没有魔法。它们是薄外观。我曾经看过,但我不记得那里有什么。