Runtime Storage in C#
von
Christian Hanne
am
30. May 2021
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.