gpt4 book ai didi

c# - 如何存储嵌入式资源的路径?

转载 作者:太空狗 更新时间:2023-10-29 22:01:16 24 4
gpt4 key购买 nike

是否可以保留项目文件的逻辑布局?

如果我有 2 个嵌入式资源,如下所示

Embedded Resources

当我调用 Assembly.GetManifestResourceNames() 时,它们中的两个被命名为:

  • MyLibrary._MyItems.SubItems.SubItem1.xml
  • MyLibrary._MyItems.SubItems.SubItem2.xml

但是,这让我无法真正了解它们在我的项目中的逻辑排序方式。据我所知,它们可能都在同一个目录中。

我担心这不可能,因为如果我这样命名文件,我的应用程序甚至无法编译:

Embedded Resources

我希望能够区分

  • MyLibrary._MyItems\SubItems\SubItem1.xml
  • MyLibrary._MyItems\SubItems.SubItem2.xml

Similar question, but less detail than I am looking for

Exact duplicate, no traction

最佳答案

一个简单的解决方案是想出一个约定来指示文件名从哪里开始。然后您可以“安全地”假设名称的其余部分表示文件夹结构。

但是,由于这些是嵌入式资源,您可以创建一个在编译之前运行的 T4 脚本(或一些类似的代码)来检查文件夹结构并构建一个详细说明该结构的类。

下面是生成类的示例。

public static class MyResources
{
private readonly Dictionary<String, String> ResourceNameToDirPathMappingSetSource = new Dictionary<String, String>();

static MyResources()
{
ResourceNameToPathMappingSetSource.Add("MyLibrary._MyItems.SubItems.SubItem1.xml", @"MyLibrary._MyItems\SubItems");
ResourceNameToPathMappingSetSource.Add("MyLibrary._MyItems.SubItems.SubItem2.xml", @"MyLibrary._MyItems");
}

public static IReadOnlyDictionary<String, String> ResourceNameToDirPathMappingSet
{
get
{
return ResourceNameToDirPathMappingSetSource;
}
}
}

我的假设是您想要获取资源名称并确定它最初所在的文件夹路径。字典当然可以包含您需要映射到的任何值(读取:自定义类)。

关于c# - 如何存储嵌入式资源的路径?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14408003/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com