代码之家  ›  专栏  ›  技术社区  ›  Gekon

如何读取UWP中的嵌入式资源?

  •  4
  • Gekon  · 技术社区  · 10 年前

    我正在将我的一个应用程序从WP 8.0迁移到UWP。我有一些JSON内容想对普通用户隐藏。在以前的版本中,我可以将这些JSON文件的构建操作设置为“嵌入式资源”,并使用以下命令对其进行迭代:

    Application.GetResourceStream(new Uri(path, UriKind.Relative));
    

    但这种方法在UWP中不可用。

    那么有没有办法读取UWP中的嵌入式资源呢?或者,除了将构建操作设置为“内容”之外,还有其他方法来存储这些文件吗?

    2 回复  |  直到 10 年前
        1
  •  5
  •   kbkkmm    10 年前

    您可以使用Assembly类的方法遍历可用资源列表:

    var names = someInstance.GetType()
                 .GetTypeInfo()
                 .Assembly
                 .GetManifestResourceNames();
    

    然后从上面的列表中按全名加载资源:

    var stream = someAssembly.GetManifestResourceStream(name);
    

    然后对溪流做任何你想做的事。

        2
  •  0
  •   Nguyên Phạm    9 年前

    您需要获取嵌入资源的程序集,然后调用GetManifestResourceStream。

    我有一个名称空间为YourProjectNameSpace的示例,其中MyFolder包含MyFile.json:

    public class EndpointBuilder
    {
        private static String _filePath = "YourProjectNameSpace.MyFolder.MyFile.json";
    
        public async Task<Endpoint> Build() {
    
            var assembly = this.GetType().GetTypeInfo().Assembly;
            var stream = assembly.GetManifestResourceStream(_filePath);
    
            JsonSerializer jsonSerializer = new JsonSerializer();
            var serializer = new JsonSerializer();
    
            using (var sr = new StreamReader(stream))
            using (var jsonTextReader = new JsonTextReader(sr))
            {
                Endpoint enpoint =  serializer.Deserialize<Endpoint>(jsonTextReader);
                return enpoint;
            }
        }
    }
    
    推荐文章