3

Я переношу одно из моих приложений из WP 8.0 в UWP. У меня есть контент JSON, который я хотел бы скрывать от обычного пользователя. В предыдущей версии я был в состоянии установить сборки действие этих JSON файлов «Embedded Resource» и перебирать их с помощью:Как читать встроенные ресурсы в UWP?

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

Но этот метод не доступен в UWP.

Так есть ли способ чтения встроенных ресурсов в UWP? Или, может быть, есть альтернативный способ хранения этих файлов, кроме установки действия сборки на «Контент»?

ответ

2

Вы можете перебирать список доступных ресурсов с использованием метода класса Ассамблеи:

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

А затем ресурс нагрузки полным именем из приведенного выше списка:

var stream = someAssembly.GetManifestResourceStream(name); 

А потом делать все, что вы хотите с потоком.

0

Вам необходимо получить сборку, в которую вы встроили ресурс, а затем вызвать 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; 
     } 
    } 
} 
Смежные вопросы