Bestimmen Sie, ob eine Ressource in Resourcemanager existiert
Frage
Gibt es trotzdem, um zu bestimmen, ob ein Resourcemanager eine benannte Ressource enthält? Derzeit bin ich fange die Missing aber ich hasse es, Ausnahmen für nicht-Ausnahmesituationen zu verwenden. Es muss einen Weg geben, den Namen Wertepaare eines Resourcemanager durch Reflexion aufzuzählen, oder was?
Bearbeiten : Ein wenig mehr Details. Die Ressourcen sind nicht Montage in der Ausführung, aber die Resourcemanager arbeitet gut. Wenn ich _resourceMan.GetResourceSet(_defaultCuture, false, true)
versuchen bekomme ich null, während, wenn ich _resourceMan.GetString("StringExists")
versuche ich einen String zurück.
Lösung
Sie können die ResourceSet verwenden zu tun, nur er alle Daten in den Speicher geladen, wenn Sie es aufzuzählen. Hier 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);
Andere Tipps
ich glaube, Sie so etwas wie Assembly.GetManifestResourceNames die Liste der zur Verfügung stehenden Ressourcen in das Manifest der Assembly aufzuzählen. Es ist nicht schön und nicht alle der Ecke Fälle lösen, funktioniert aber, wenn erforderlich.