在表达式中使用变量值?

时间:2014-01-26 21:01:24

标签: c# .net

假设我有很多资源文件:a.resxb.resxc.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;

我知道上面这行不正确但有没有办法达到这样的目的? 或者如果没有,还有另一种方法吗?

3 个答案:

答案 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)

查看生成的代码。在那里你可以看到它本身如何访问底层数据。应该很容易。单方法调用。生成的属性下面没有魔法。它们是薄外观。我曾经看过,但我不记得那里有什么。