ResourcEmanager에 자원이 존재하는지 확인하십시오
문제
어쨌든 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 어셈블리 매니페스트에서 사용 가능한 리소스 목록을 열거합니다. 그것은 예쁘지 않고 모든 코너 케이스를 해결하지는 않지만 필요한 경우 작동합니다.
제휴하지 않습니다 StackOverflow