11

Sto scrivendo una classe ConfigManager utilizzando le librerie di classi portatili. PCL supporta le classi StreamReader e StreamWriter che desidero utilizzare, ma la versione PCL di quelle classi non supporta il passaggio di una stringa durante la costruzione. PCL inoltre non supporta lo reader.Close() e lo writer.Close(). Infine non supporta la classe FileStream.StreamReader e libreria di classi portatili

, quindi sono alla ricerca di una risposta ad una delle seguenti domande:

  1. Come posso ottenere le classi StreamReader e StreamWriter lavorano in un PCL?
  2. Come posso creare un nuovo stream utilizzando PCL?
  3. Quali altre alternative devo caricare e salvare i file in un PCL?
+0

Ha supporta lo smaltimento gli oggetti del flusso? Perché dovrebbe chiuderlo bene. –

+2

Invece di. Chiudi() usa .Dispose(), no non c'è nessuna soluzione, perché non c'è un problema ...l'accesso al file system deve essere astratto Solo codice contro le interfacce. Controllare: [link] hthttps: //pclstorage.codeplex.com [link] (https://github.com/slodge/MvvmCross/tree/v3/Plugins/Cirrious/File) – Dan

risposta

8

Utilizzare Dispose() anziché Close() (o semplicemente avvolgere tutto in una dichiarazione using). Abbiamo nascosto/rimosso Close() nelle app di Windows Store e PCL più recenti, perché fa la stessa cosa e le persone sarebbero confuse su quale chiamare.

Considerare l'utilizzo di PCL Storage per l'accesso al file system multipiattaforma.

Ecco alcuni post del blog si consiglia di fare riferimento per come affrontare funzionalità specifiche della piattaforma in PCLS:

+0

PCLStorage è asincrona, che è spesso sconsiderato. Soprattutto è triste usare async PCLStorage su .NET/Xamarin/WP8 dove System.IO esiste su tutte le piattaforme. – Grigory

+0

A chi legge questa risposta che userebbe l'archiviazione PCL. L'archiviazione PCL non viene più mantenuta, consiglierei di non utilizzarla su un'applicazione di produzione. Preferisci implementare la tua soluzione di storage utilizzando l'iniezione delle dipendenze – Tifa

2

trovato la risposta qui (da Rob Caplan): http://social.msdn.microsoft.com/Forums/windowsapps/en-US/386eb3b2-e98e-4bbc-985f-fc143db6ee36/read-local-file-in-portable-library#386eb3b2-e98e-4bbc-985f-fc143db6ee36

accesso ai file non può essere fatto in modo portabile tra le applicazioni Windows Store e Windows Phone 8 applicazioni. Dovrai utilizzare il codice specifico della piattaforma, per aprire il file e acquisire uno stream. È quindi possibile passare lo streaming in il PCL.

Dal momento che entrambe le applicazioni Windows Store e Windows Phone 8 applicazioni utilizzano i essenzialmente le stesse classi di runtime di Windows (Phone) da Windows.Storage per aprire i file è possibile condividere il codice (ma non il binario) collegando un codice file tra i due progetti. Vedere Condividi il codice con Aggiungi come collegamento.

Vedere Ingrandire il riutilizzo del codice tra Windows Phone 8 e Windows 8 per altre tecniche per la condivisione del codice.

Se qualcuno ha una soluzione diversa da questa, sarei interessato a sentirlo; anche chiedendo i metodi .Close() nel PCL.