是否可以保留项目文件的逻辑布局?
如果我有2个嵌入式资源,如下所示
当我调用Assembly.GetManifestResourceNames()时,其中两个命名为:
但是,这让我无法真正了解它们在我的项目中如何按逻辑排序。据我所知,他们都可以在同一个目录中。
我担心这可能是不可能的,因为如果我这样命名文件,我的应用程序甚至不会编译:
我希望能够区分
答案 0 :(得分:0)
一个简单的解决方案是提出一个约定来指示文件名的起始位置。然后,您可以“安全地”假设名称的其余部分表示文件夹结构。
但是,由于这些是嵌入式资源,您可以创建在编译之前运行的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;
}
}
}
我的假设是您想要获取资源名称并确定它最初所在的文件夹路径。当然,字典可以包含您需要映射到的任何值(读取:自定义类)。