C#资源处理
本文关键字:处理 资源 | 更新日期: 2023-09-27 18:01:04
我使用file->Newitem>resource创建了一个资源文件,并放置了2个键和2个值
如果我将其设置为嵌入式资源,那么我可以执行并接收值:
ResourceName.ResourceManager.GetString("Key");
但当我在并没有嵌入资源的情况下这样做时,我会遇到异常。
A first chance exception of type
'System.Resources.MissingManifestResourceException' occurred in mscorlib.dll
如何创建用我创建的资源初始化自身的ResourceManager对象?
我试过了:
ResourceManager resourceManager = ResourceManager.CreateFileBasedResourceManager
(resourceFile, filePath, null);
当路径和文件名正常,但对象为null并引发异常时。
我正在从源中跟踪此读取值。。但也不起作用。文件无法加载?
回答ilansch在原始问题的注释中添加的问题:
我也想有一个成员,我可以打电话和搜索密钥
这里有一种方法(假设您已经在项目中添加了一个名为"ResourceName.resx"的"资源文件"(:
ResourceSet rs = ResourceName.ResourceManager.GetResourceSet(
Thread.CurrentThread.CurrentUICulture, true, true);
Dictionary<string, object> resources = rs.Cast<DictionaryEntry>().ToDictionary(r => (string) r.Key, r => r.Value);
// Can now list all keys, e.g.:
foreach (string key in resources.Keys)
{
Debug.WriteLine(key);
}
// ...or can find out whether a key is present:
object v;
if (resources.TryGetValue("Key", out v))
{
Debug.WriteLine(v);
}
这会将资源文件中的所有资源加载到Dictionary<string, object>
中,然后您可以使用它来发现密钥。不过,这可能效率不高,因为它会将整个资源集加载到内存中。
如果你只想要一个密钥列表,你可以这样做:
string[] keys = rs.Cast<DictionaryEntry>().Select(r => (string) r.Key).ToArray();
不确定这是否真的有帮助,因为我不清楚你在这里的总体目标是什么。