1

我使用 File -> New item > 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);

当路径和文件名正常但对象为空并引发异常时。

从源代码中跟踪这个读取值..但也没有工作。文件无法加载?

4

1 回答 1

2

要回答 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();

不确定这是否真的有帮助,因为我不清楚你的总体目标是什么。

于 2013-02-25T15:32:05.443 回答