2008-08-27 10 views
13

que tiene una aplicación en la que yo estoy poniendo en práctica la localización.referencia dinámica a archivos de recursos en C#

ahora tengo que hacer referencia dinámicamente un nombre en el archivo resouce.

suponer que tengo un archivo de recursos llamada Login.resx, un cierto número de cuerdas: foo = "hola", bar = "cruel" y baz = "mundo"

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

mi problema es que, en tiempo de código, no sé si quiero referirme a foo, bar o baz - Tengo una cadena que contiene "foo", "bar" o "baz".

necesito algo como:

Login [ "foo"];

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

Respuesta

19

que necesitará para una instancia ResourceManager para la Login.resx:

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

Podría ayudar a mirar el código generado en los archivos de código subyacente de los archivos de recursos que son creados por el IDE. Estos archivos contienen básicamente propiedades de sólo lectura para cada recurso que hace una consulta a un gestor de recursos internos.

+10

O incluso más fácil, puede acceder al 'ResourceManager' en el propio recurso. p.ej. Login.ResourceManager.GetString ("foo") –

2

Si coloca el archivo de recursos en los App_GlobalResources carpeta como lo hice, es necesario utilizar

mundial :: System.Resources.ResourceManager temp = new mundial :: System.Resources.ResourceManager ("RootNamespace.Login", mundial :: System.Reflection.Assembly.Load ("App_GlobalResources"));

Me tomó un tiempo darme cuenta de esto. Espero que esto ayude a alguien. :)

Cuestiones relacionadas