Referência dinâmica para arquivos de recursos em C#
-
09-06-2019 - |
Pergunta
Tenho um aplicativo no qual estou implementando a localização.
Agora preciso referenciar dinamicamente um nome no arquivo de recursos.
suponha que eu tenha um arquivo de recursos chamado Login.resx, com várias strings:foo="olá", bar="cruel" e baz="mundo"
normalmente, vou me referir como:String resultado =Login.foo;e resultado=="olá";
meu problema é que, na hora do código, não sei se quero me referir a foo, bar ou baz - tenho uma string que contém "foo", "bar" ou "baz".
Eu preciso de algo como:
Entrar["foo"];
Alguém sabe se existe alguma maneira de referenciar dinamicamente uma string em um arquivo de recursos?
Solução
Você precisará instanciar um ResourceManager
para o Login.resx
:
var resman = new System.Resources.ResourceManager(
"RootNamespace.Login",
System.Reflection.Assembly.GetExecutingAssembly()
)
var text = resman.GetString("resname");
Pode ser útil observar o código gerado nos arquivos code-behind dos arquivos de recursos criados pelo IDE.Esses arquivos contêm basicamente propriedades somente leitura para cada recurso que faz uma consulta a um gerenciador de recursos interno.
Outras dicas
Se você colocar seu arquivo de recursos na pasta App_GlobalResources como eu fiz, você precisará usar
Global :: System.resources.ResourceManager Temp = new Global :: System.resources.resourceManager ("RootNamespace.Login", Global :: System.reflection.assemly.load ("App_globalResources"));
Levei um tempo para descobrir isso.Espero que isso ajude alguém.:)