反正是有,以确定是否一个ResourceManager包含一个名为资源? 目前我捕捉MissingManifestResourceException但我讨厌不得不使用非特殊情况下例外。 必须有一些方式,通过反射,或东西列举一个ResourceManager的名称值对?
编辑 :更详细一点。 资源是不是在执行程序集,但是,ResourceManager会工作得很好。 如果我尝试_resourceMan.GetResourceSet(_defaultCuture, false, true)
我得到空,而如果我尝试_resourceMan.GetString("StringExists")
我得到一个字符串返回。
您可以使用的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);
我想你可以使用类似Assembly.GetManifestResourceNames枚举大会的清单可用资源的列表。 这是不漂亮,并不能解决所有的角落案件,但如果需要的作品。