Pregunta

Tengo una aplicación en la que estoy implementando la localización.

Ahora necesito hacer referencia dinámica a un nombre en el archivo de recursos.

Supongo que tengo un archivo de recursos llamado Login.resx, y varias cadenas:foo="hola", bar="cruel" y baz="mundo"

normalmente, me referiré como:Resultado de cadena =Login.foo;y resultado=="hola";

mi problema es que en el momento del código, no sé si quiero hacer referencia a foo, bar o baz; tengo una cadena que contiene "foo", "bar" o "baz".

Necesito algo como:

Iniciar sesión["foo"];

¿Alguien sabe si hay alguna forma de hacer referencia dinámicamente a una cadena en un archivo de recursos?

¿Fue útil?

Solución

Necesitarás crear una instancia ResourceManager Para el Login.resx:

var resman = new System.Resources.ResourceManager(
    "RootNamespace.Login",
    System.Reflection.Assembly.GetExecutingAssembly()
)
var text = resman.GetString("resname");

Puede resultar útil observar el código generado en los archivos de código subyacente de los archivos de recursos creados por el IDE.Estos archivos básicamente contienen propiedades de solo lectura para cada recurso que realiza una consulta a un administrador de recursos interno.

Otros consejos

Si coloca su archivo de recursos en la carpeta App_GlobalResources como lo hice yo, debe usar

Global :: System.Resources.ResourCemanager temp = new Global :: System.Resources.ResourCemanager ("rootnamespace.login", global :: system.reflection.assembly.load ("app_globalresources");

Me tomó un tiempo resolver esto.Espero que esto ayude a alguien.:)

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top