Определите, существует ли ресурс в ResourceManager - PullRequest
17 голосов
/ 02 октября 2008

Есть ли способ определить, содержит ли ResourceManager именованный ресурс? В настоящее время я ловлю исключение MissingManifestResourceException, но ненавижу использовать исключения в неисключительных ситуациях. Должен быть какой-то способ перечисления пар «имя-значение» ResourceManager с помощью отражения или что-то в этом роде?

РЕДАКТИРОВАТЬ : немного больше деталей. Ресурсы не находятся в выполнении сборки, однако ResourceManager работает просто отлично. Если я пытаюсь _resourceMan.GetResourceSet(_defaultCuture, false, true), я получаю нулевое значение, тогда как, если я пытаюсь _resourceMan.GetString("StringExists"), я получаю строку назад.

Ответы [ 2 ]

22 голосов
/ 02 октября 2008

Вы можете использовать ResourceSet, чтобы сделать это, только он загружает все данные в память, если вы перечислите их. Вот, пожалуйста:

    // 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);
3 голосов
/ 02 октября 2008

Я думаю, вы можете использовать что-то вроде Assembly.GetManifestResourceNames , чтобы перечислить список ресурсов, доступных в манифесте сборки. Это не красиво и не решает все угловые случаи, но работает, если требуется.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...