문제

어쨌든 ResourceManager에 이름이 지정된 리소스가 포함되어 있는지 확인할 수 있습니까? 현재 나는 MissingManifestresourceException을 잡고 있지만 비 법적 상황에 대한 예외를 사용하는 것이 싫다. 반사를 통해 Resourcemanager의 이름 값 쌍을 열거하는 방법이 있어야합니까?

편집하다: 조금 더 자세한. 리소스는 어셈블리를 실행하는 데 있지 않지만 ResourceManager는 잘 작동합니다. 내가 시도하면 _resourceMan.GetResourceSet(_defaultCuture, false, true) 내가 시도하면 나는 널을 얻는다 _resourceMan.GetString("StringExists") 나는 문자열을 다시 얻는다.

도움이 되었습니까?

해결책

Resources 세트를 사용하여이를 수행 할 수 있으며, 열거 된 경우 모든 데이터를 메모리에로드합니다. 여기 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);

다른 팁

나는 당신이 같은 것을 사용할 수 있다고 생각합니다 Assembly.getManifestresourcenames 어셈블리 매니페스트에서 사용 가능한 리소스 목록을 열거합니다. 그것은 예쁘지 않고 모든 코너 케이스를 해결하지는 않지만 필요한 경우 작동합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top