3

Ich migriere eine meiner Apps von WP 8.0 auf UWP. Ich habe einige JSON-Inhalte, die ich vor einem normalen Benutzer verstecken möchte. In früheren Version konnte ich Build Wirkung dieser JSON-Dateien auf ‚Eingebettete Ressource‘ und wiederholen sie mit:Wie eingebettete Ressourcen in UWP lesen?

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

Aber diese Methode in UWP nicht verfügbar ist.

Gibt es eine Möglichkeit, eingebettete Ressourcen in UWP zu lesen? Oder gibt es eine andere Möglichkeit, diese Dateien zu speichern, als die Build-Aktion auf 'Inhalt' zu setzen?

Antwort

2

Sie durch die Liste der verfügbaren Ressourcen laufen können Methode der Assembly-Klasse:

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

Und dann Ressourcenbelastung durch vollständige Namen aus der Liste oben:

var stream = someAssembly.GetManifestResourceStream(name); 

Und dann tun, was Sie wollen mit dem Strom.

0

Sie müssen Assembly holen, die Sie eingebettete Ressource dann GetManifestResourceStream aufrufen.

Ich habe Probe mit Namespace YourProjectNameSpace haben MyFolder enthalten 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; 
     } 
    } 
}