Referencia dinámica a archivos de recursos en C#
-
09-06-2019 - |
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?
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.:)