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

Windows phone 如何读取UWP中的嵌入式资源?,windows-phone,win-universal-app,embedded-resource,windows-10-mobile,Windows Phone,Win Universal App,Embedded Resource,Windows 10 Mobile,我正在将我的一个应用程序从WP 8.0迁移到UWP。我想对普通用户隐藏一些JSON内容。在以前的版本中,我能够将这些JSON文件的构建操作设置为“嵌入式资源”,并使用以下命令对其进行迭代: Application.GetResourceStream(new Uri(path, UriKind.Relative)); 但这种方法在UWP中不可用 那么有没有办法读取UWP中的嵌入式资源呢?或者,除了将构建操作设置为“内容”之外,还有另一种存储这些文件的方法吗?您可以使用Assembly类的方法遍历

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

Application.GetResourceStream(new Uri(path, UriKind.Relative));
但这种方法在UWP中不可用


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

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

var names = someInstance.GetType()
             .GetTypeInfo()
             .Assembly
             .GetManifestResourceNames();
然后从上面的列表中按全名加载资源:

var stream = someAssembly.GetManifestResourceStream(name);

然后对流执行任何您想要的操作。

您需要获取嵌入资源的程序集,然后调用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;
        }
    }
}
公共类端点生成器
{
私有静态字符串\u filePath=“YourProjectNameSpace.MyFolder.MyFile.json”;
公共异步任务生成(){
var assembly=this.GetType().GetTypeInfo().assembly;
var stream=assembly.GetManifestResourceStream(_filePath);
JsonSerializer JsonSerializer=新的JsonSerializer();
var serializer=new JsonSerializer();
使用(var sr=新的StreamReader(stream))
使用(var jsonTextReader=new jsonTextReader(sr))
{
端点enpoint=serializer.Deserialize(jsonTextReader);
返回点;
}
}
}