Question

Est-il possible de déterminer si un ResourceManager contient une ressource nommée? Actuellement, j'attrape MissingManifestResourceException mais je déteste avoir à utiliser Exceptions pour des situations non exceptionnelles. Il doit y avoir un moyen d’énumérer les paires nom-valeur d’un ResourceManager par réflexion ou autre chose?

MODIFIER : un peu plus en détail. Les ressources ne sont pas en train d'exécuter l'assembly, cependant le ResourceManager fonctionne correctement. Si j'essaie _resourceMan.GetResourceSet (_defaultCuture, false, true) , j'obtiens la valeur null, alors que si j'essaie _resourceMan.GetString (" StringExists ")) , je récupère une chaîne.

Était-ce utile?

La solution

Vous pouvez utiliser le ResourceSet pour cela, mais il charge uniquement toutes les données en mémoire si vous les énumérez. Ici vous êtes:

    // 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);

Autres conseils

Je pense que vous pouvez utiliser quelque chose comme Assembly.GetManifestResourceNames pour énumérer la liste des ressources disponibles dans le manifeste de Assembly. Ce n’est pas beau et ne résout pas tous les problèmes, mais fonctionne au besoin.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top