Percorso assoluto dei file con IsolatedStorage
Segnalo nel blog una risposta che ho appena mandato via email a un lettore di VBJ che mi ha chiesto come sia possibile leggere da IsolatedStorage il percorso assoluto di un file o di un folder.
Che io sappia un metodo pubblico per farlo non c'è, però esiste un metodo internal di nome GetFullPath che fa al caso nostro. Per chiamarlo dobbiamo appoggiarci a un po' di Reflection:
MethodInfo mi = isoFile.GetType().GetMethod("GetFullPath", BindingFlags.NonPublic | BindingFlags.Instance);
object[] parameters = new object[1] { "Files/Ordini/Ordine01.txt" } ;
string fullPath = StringType.FromObject(mi.Invoke(isoFile, parameters));
Come tutte le volte che si utilizza Reflection, in particolare su membri privati o internal, bisogna assumersi la responsabilità di ciò che si fa, perchè il codice privato/internal potrebbe essere cambiato senza alcun preavviso.
Inoltre in generale non è una buona regola accedere ai file dell'IsolatedStorage usandone il path assoluto, altrimenti perchè dovremmo usare l'IsolatedStorage?
Come poi giustamente mi segnala Marco via email: i diritti necessari a fare quell'operazione (e probabilmente per accedere al file con un percorso assoluto) difficilmente sono quelli di "Local Intranet" o "Internet".