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?

Foi útil?

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.:)

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top