Archiviazione oggetti (archiviato)

Avvertimento

Questo componente è stato archiviato e non è disponibile nella versione corrente di Windows Community Toolkit.

Sebbene non ci siano piani immediati per convertire questo componente in 8.x, la community è lieta di esprimere interesse o contribuire alla sua inclusione.

Per altre informazioni:

La documentazione originale è riportata di seguito.


L'helper di Archiviazione oggetti ti aiuterà a gestire l'archiviazione di oggetti generici all'interno delle applicazioni UWP, sia in locale che in tutti i dispositivi (roaming).

Costruttori

LocalObjectStorageHelper e RoamingObjectStorageHelper hanno lo stesso costruttore con un parametro facoltativo:

Costruttore Description
ObjectStorageHelper(IObjectSerializer = null) Inizializza una nuova istanza della classe ObjectStorageHelper con l'oggetto IObjectSerializer fornito, che verrà usato durante la serializzazione e la deserializzazione dei dati in Impostazioni o in Archiviazione; se non viene fornito alcun serializzatore, verrà usato un serializzatore JSON predefinito.

Proprietà

Proprietà TIPO Description
Folder Storagefolder Ottiene o imposta la cartella di archiviazione
Settings ApplicationDataContainer Ottiene o imposta il contenitore delle impostazioni

Methods

Methods Tipo di ritorno Description
FileExistsAsync(String) Attività<bool> Rilevare se esiste già un file
KeyExists(String) bool Rilevare se esiste già un'impostazione
KeyExists(String, String) bool Rilevare se un'impostazione esiste già in composito
Read(String, T) T Recuperare un singolo elemento in base alla relativa chiave
Read(String, String, T) T Recuperare un singolo elemento in base alla chiave in composito
ReadFileAsync(String, T) Attività<T> Recuperare l'oggetto dal file
Save(String, IDictionary) vuoto Salvare un gruppo di elementi attraverso la sua chiave in un'entità composita. Questo metodo deve essere considerato per gli oggetti che non superano 8.000 byte durante la durata dell'applicazione (fa riferimento a SaveFileAsync<T>(String, T) per oggetti complessi/di grandi dimensioni) e per i gruppi di impostazioni che devono essere trattati in modo atomico
Save(String, T) vuoto Salvare un singolo elemento in base alla relativa chiave. Questo metodo deve essere considerato per gli oggetti che non superano 8.000 byte durante la durata dell'applicazione (fa riferimento a SaveFileAsync<T>(String, T) per oggetti complessi/di grandi dimensioni
SaveFileAsync(String, T) Task<StorageFile> Salvare l'oggetto all'interno del file. Non esiste alcuna limitazione per l'uso di questo metodo (fa riferimento al metodo Save<T>(String, T) per oggetti semplici.

Example

Archiviazione locale

Se è necessario gestire i salvataggi locali di qualsiasi oggetto (generico), è possibile usare LocalObjectStorageHelper.

var helper = new LocalObjectStorageHelper();

// Read simple objects
string keySimpleObject = "simple";
if (helper.KeyExists(keySimpleObject))
{
    string result = helper.Read<string>(keySimpleObject);
}

// Read simple objects in a composite
string keyCompositeObject = "composite";
if (helper.KeyExists(keyCompositeObject, keySimpleObject))
{
    string result = helper.Read<string>(keyCompositeObject, keySimpleObject);
}

// Save simple objects
helper.Save(keySimpleObject, 47);

// Save simple objects in a composite
Dictionary<string, object> simpleObjects = new Dictionary<string, object>();
simpleObjects.Add("simpleObjectValueOne", 47);
simpleObjects.Add("simpleObjectValueTwo", "hello!");
helper.Save(keyCompositeObject, simpleObjects);

// Read complex/large objects 
string keyLargeObject = "large";
if (await helper.FileExistsAsync(keyLargeObject))
{
    var result = await helper.ReadFileAsync<MyLargeObject>(keyLargeObject);
}

// Save complex/large objects 
var o = new MyLargeObject
{
    ...
};
await helper.SaveFileAsync(keySimpleObject, o);
Dim helper = New LocalObjectStorageHelper()

' Read simple objects
Dim keySimpleObject As String = "simple"
If helper.KeyExists(keySimpleObject) Then
    Dim result As String = helper.Read(Of String)(keySimpleObject)
End If

' Read simple objects in a composite
Dim keyCompositeObject As String = "composite"
If helper.KeyExists(keyCompositeObject, keySimpleObject) Then
    Dim result As String = helper.Read(Of String)(keyCompositeObject, keySimpleObject)
End If

' Save simple objects
helper.Save(keySimpleObject, 47)

' Save simple objects in a composite
Dictionary(Of String, Object) simpleObjects = New Dictionary(Of String, Object)()
simpleObjects.Add("simpleObjectValueOne", 47)
simpleObjects.Add("simpleObjectValueTwo", "hello!")
helper.Save(keyCompositeObject, simpleObjects)

' Read complex/large objects 
Dim keyLargeObject As String = "large"
If Await helper.FileExistsAsync(keyLargeObject) Then
    Dim result = Await helper.ReadFileAsync(Of MyLargeObject)(keyLargeObject)
End If

' Save complex/large objects
Dim o = New MyLargeObject With {
    ...
}
Await helper.SaveFileAsync(keySimpleObject, o)

Archiviazione in roaming

Allo stesso modo, se è necessario gestire i salvataggi mobili in tutti i dispositivi utente, è possibile usare RoamingObjectStorageHelper. L'implementazione di RoamingObjectStorageHelper è assolutamente simile a LocalObjectStorageHelper.

var helper = new RoamingObjectStorageHelper();

// Read simple objects
string keySimpleObject = "simple";
if (helper.KeyExists(keySimpleObject))
{
    string result = helper.Read<string>(keySimpleObject);
}

// Read simple objects in a composite
string keyCompositeObject = "composite";
if (helper.KeyExists(keyCompositeObject, keySimpleObject))
{
    string result = helper.Read<string>(keyCompositeObject, keySimpleObject);
}

// Save simple objects
helper.Save(keySimpleObject, 47);

// Save simple objects in a composite
Dictionary<string, object> simpleObjects = new Dictionary<string, object>();
simpleObjects.Add("simpleObjectValueOne", 47);
simpleObjects.Add("simpleObjectValueTwo", "hello!");
helper.Save(keyCompositeObject, simpleObjects);

// Read complex/large objects 
string keyLargeObject = "large";
if (await helper.FileExistsAsync(keyLargeObject))
{
    var result = await helper.ReadFileAsync<MyLargeObject>(keyLargeObject);
}

// Save complex/large objects 
var o = new MyLargeObject
{
    ...
};
await helper.SaveFileAsync(keySimpleObject, o);
Dim helper = New RoamingObjectStorageHelper()

' Read simple objects
Dim keySimpleObject As String = "simple"
If helper.KeyExists(keySimpleObject) Then
    Dim result As String = helper.Read(Of String)(keySimpleObject)
End If

' Read simple objects in a composite
Dim keyCompositeObject As String = "composite"
If helper.KeyExists(keyCompositeObject, keySimpleObject) Then
    Dim result As String = helper.Read(Of String)(keyCompositeObject, keySimpleObject)
End If

' Save simple objects
helper.Save(keySimpleObject, 47)

' Save simple objects in a composite
Dictionary(Of String, Object) simpleObjects = New Dictionary(Of String, Object)()
simpleObjects.Add("simpleObjectValueOne", 47)
simpleObjects.Add("simpleObjectValueTwo", "hello!")
helper.Save(keyCompositeObject, simpleObjects)

' Read complex/large objects 
Dim keyLargeObject As String = "large"
If Await helper.FileExistsAsync(keyLargeObject) Then
    Dim result = Await helper.ReadFileAsync(Of MyLargeObject)(keyLargeObject)
End If

' Save complex/large objects 
Dim o = New MyLargeObject With {
    ...
}
Await helper.SaveFileAsync(keySimpleObject, o)

Progetto di esempio

Pagina di esempio di origine di Object Storage. Puoi vederlo in azione nell'app di esempio di Windows Community Toolkit.

Requisiti

Famiglia di dispositivi Universale, 10.0.16299.0 o versione successiva
Namespace Microsoft.Toolkit.Uwp
Pacchetto NuGet Microsoft.Toolkit.Uwp

API