Runtime Storage in C#

Manchmal möchte man einfach nur mal eben einen Wert abspeichern. Dafür habe ich die RuntimeStorage-Klasse geschrieben. Sie dient mir in einigen Spielen als naiver Zwischenspeicher für ein paar weniger wichtige Werte.

Gespeichert werden können Integer-, Float- und String-Werte. Dank Überladung gibt es eigentlich nur zwei verschiedene Methoden: Get und Set. Bei Get muss immer zwingend ein Default-Wert vergeben werden (sonst funktioniert die Überladung nicht). Dieser wird zurückgegeben, wenn kein gespeicherter Wert gefunden wurde.

using System.Collections.Generic;

public class RuntimeStorage
{
    private Dictionary<string, int> _integerValues = new Dictionary<string, int>();
    private Dictionary<string, float> _floatValues = new Dictionary<string, float>();
    private Dictionary<string, string> _stringValues = new Dictionary<string, string>();

    public void Set(string key, int value)
    {
        _integerValues[key] = value;
    }

    public void Set(string key, float value)
    {
        _floatValues[key] = value;
    }

    public void Set(string key, string value)
    {
        _stringValues[key] = value;
    }

    public int Get(string key, int defaultValue)
    {
        int value;
        if (_integerValues.TryGetValue(key, out value)) {
            return value;
        }

        return defaultValue;
    }

    public float Get(string key, float defaultValue)
    {
        float value;
        if (_floatValues.TryGetValue(key, out value)) {
            return value;
        }

        return defaultValue;
    }

    public string Get(string key, string defaultValue)
    {
        string value;
        if (_stringValues.TryGetValue(key, out value)) {
            return value;
        }

        return defaultValue;
    }
}

So kann man Werte speichern:

RuntimeStorage myStorage = new RuntimeStorage();
myStorage.Set("someInteger", 42);
myStorage.Set("someFloat", 0.815);
myStorage.Set("someString", "foo");

Und so kann man Werte laden:

RuntimeStorage myStorage = new RuntimeStorage();
myStorage.Get("someInteger", 0);
myStorage.Get("someFloat", 0.0f);
myStorage.Get("someString", "");

Übrigens kann man das ganze auch als Singleton anlegen und damit Werte zwischen verschiedenen Klassen teilen.

Noch keine Kommentare vorhanden.