Подтвердить что ты не робот

Определите, существует ли ресурс в ResourceManager

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

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

4b9b3361

Ответ 1

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

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

Ответ 2

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