namespace Prefab.Base; /// /// Contract for models that expose a customizable attribute bag to module developers. /// public interface ICanBeCustomized : IHasGenericAttributes { /// /// Sets or updates a custom attribute value. /// /// The attribute name. /// The value to store. void SetAttribute(string key, object value); /// /// Removes a custom attribute by key. /// /// The attribute to remove. /// true when the key existed and was removed. bool RemoveAttribute(string key); /// /// Attempts to read an attribute value. /// /// The attribute to inspect. /// Receives the typed attribute value when present. /// The expected attribute type. /// true when the attribute exists and matches the requested type. bool TryGetAttribute(string key, out T value); }