Pergunta

Existe uma maneira de determinar se um ResourceManager contém um recurso chamado? Atualmente estou pegando o MissingManifestResourceException mas eu odeio ter que usar exceções para situações não-excepcionais. Deve haver alguma maneira de enumerar os pares de valores de nome de um ResourceManager através da reflexão, ou algo assim?

Editar : Um pouco mais detalhadamente. Os recursos não estão em execução montagem, no entanto, o ResourceManager está funcionando muito bem. Se eu tentar _resourceMan.GetResourceSet(_defaultCuture, false, true) I get nulo, ao passo que se eu tentar _resourceMan.GetString("StringExists") eu recebo uma volta string.

Foi útil?

Solução

Você pode usar o ResourceSet fazer isso, só que carrega todos os dados na memória se você enumerá-lo. Aqui 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);

Outras dicas

Eu acho que você pode usar algo como Assembly.GetManifestResourceNames para enumerar a lista de recursos disponíveis na do manifesto do assembly. Não é bonito e não resolve todos os casos de canto, mas funciona, se necessário.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top