C#从特定文件夹中获取嵌入资源或区分不同文件夹中的嵌入资源

标签 c# reflection embedded-resource

标题总结得很好。我知道我可以使用以下方法获取嵌入式资源名称:

        var assembly = System.Reflection.Assembly.GetExecutingAssembly();
        string[] files = assembly.GetManifestResourceNames();

但我希望能够仅从特定文件夹中获取嵌入式资源。或者至少能够区分来自不同文件夹的嵌入资源。

最佳答案

资源以下列格式返回。

[Namespace].[Folder].[Filename]

请注意,路径中的所有文件夹均以. 分隔。因此,如果您有一个具有以下配置的嵌入式资源

myproject.csproj (Namespace = com.mycompany.myproject)
- Resources
  - Images
    - Icons
      - my_icon.ico

The resource name would be...

com.mycompany.myproject.Resources.Images.Icons.my_icon.ico

如果你想从一个特定的文件夹中选择所有,你可以使用下面的LINQ表达式或者根据你的需要修改它。

string prefix = "your_namespace.your_folder."

var resourceNames = Assembly.GetExecutingAssembly()
    .GetManifestResourceNames()
    .Where(name => name.StartsWith(prefix));

关于C#从特定文件夹中获取嵌入资源或区分不同文件夹中的嵌入资源,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15955973/

相关文章:

c# - 如何复制 NuGet 包 native 库文件?

java - 空类数组的表示

java - 使用 .jar Applet 加载资源

c# - 资源字典与 .cs 文件

c# - 如何将运行时已知的类型转换为给定类型的列表?

java - 从jar中读取资源文件

javascript - 使用 ASP.NET WCF 服务 JSON 发布数据

c# - 使用 C# 和 WPF 更新 XML 文件

c# - 找不到类型或命名空间名称 'System'

c# - Filter Type.GetProperties(),其中 PropertyType.Name 位于列表中