Code/Core/IMeta.cs
namespace Nodebox;
public interface IMeta {
public Dictionary<string, object> Meta { get; }
}
public static class MetaExtensions {
extension(IMeta meta) {
public T GetMeta<T>(string key) => (T)meta.Meta[key];
public T GetMetaOrDefault<T>(string key) => (T)meta.Meta.GetValueOrDefault(key);
public T GetMetaOrDefault<T>(string key, T value) => (T)meta.Meta.GetValueOrDefault(key, value);
public void SetMeta<T>(string key, T value) => meta.Meta[key] = value;
public bool TryGetMeta<T>(string key, out T value) {
var success = meta.Meta.TryGetValue(key, out var innerValue);
value = (T)innerValue;
return success;
}
}
}