Pregunta

¿Hay alguna forma de determinar si un ResourceManager contiene un recurso con nombre? Actualmente estoy detectando la excepción MissingManifestResourceException pero odio tener que usar Excepciones para situaciones no excepcionales. Debe haber alguna forma de enumerar los pares de valores de nombre de un ResourceManager a través de la reflexión, o algo así.

EDIT : Un poco más de detalle. Los recursos no están en la ejecución del ensamblaje, sin embargo, el Administrador de recursos está funcionando bien. Si intento _resourceMan.GetResourceSet (_defaultCuture, false, true) , obtengo un valor nulo, mientras que si intento _resourceMan.GetString (" StringExists ") obtengo una cadena de vuelta.

¿Fue útil?

Solución

Puede usar el Conjunto de recursos para hacer eso, solo que carga todos los datos en la memoria si lo enumera. Aquí tienes:

    // At startup.
    ResourceManager mgr = Resources.ResourceManager;
    List<string> keys = new List<string>();

    ResourceSet set = mgr.GetResourceSet(CultureInfo.CurrentCulture, true, true);
    foreach (DictionaryEntry o in set)
    {
        keys.Add((string)o.Key);
    }
    mgr.ReleaseAllResources();

    Console.WriteLine(Resources.A);

Otros consejos

Creo que puedes usar algo como Assembly.GetManifestResourceNames para enumerar la lista de recursos disponibles en el manifiesto del ensamblado. No es bonito y no resuelve todos los casos de esquina, pero funciona si es necesario.

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