如何在列表中获取资源及其名称?

How to get Resources and their names in a list?

这是我的问题场景:-

  1. 我在项目的 Resources 文件夹中添加了很多图像和其他文件(如 .wav)。图像文件的名称如 "woof1"、"woof2"....."env1"、"env2"......"alpha1"、"alpha2".......等等.

  2. 我想访问仅以特定前缀(如 "woof#" 或 "alpha#")开头的所有图像文件,并希望将这些图像存储在列表中,并存储名称列表中检索到的图像的数量。

请帮帮我。我的项目是做一个记忆游戏……前缀定义了不同类别的图像。我真的需要知道这个。

资源是否作为资源添加到项目文件中?如果是这样,您可以使用 Assembly.GetManifestResourceNames.

来自 MSDN: Finding the Names of Resources in an Assembly 的示例代码:

System.Reflection.Assembly thisExe; 
thisExe = System.Reflection.Assembly.GetExecutingAssembly();
string [] resources = thisExe.GetManifestResourceNames();
string list = "";

// Build the string of resources.
foreach (string resource in resources)
    list += resource + "\r\n";

然后在过滤资源名称以获取您需要的资源名称后(例如使用 LINQ 或创建新的 List 并在 foreach 循环中填充它等),使用 Assembly.GetManifestResourceStream 实际 获取 资源。

如果您还没有将文件添加到项目中,我强烈建议您这样做,因为这意味着如果您发布它,您可以分发的文件会更少。请参阅 MSDN: resource files 了解如何执行此操作。

在这个 post 中查看我的回答:

您可以使用

而不是按名称获取资源
var list = Assembly.GetExecutingAssembly().GetManifestResourceNames();

获取资源并运行对其进行 LINQ 筛选。