private void ReadJankyAttributes() { _tags = NodeType.GetCustomAttributes <JankyTagAttribute>(false).ToDictionary(a => a.Name); _properties = NodeType.GetCustomAttributes <JankyPropertyAttribute>(true).ToDictionary(a => a.Name); var defaultOverrides = NodeType.GetCustomAttributes <JankyDefaultOverrideAttribute>(false); foreach (var def in defaultOverrides) { if (_properties.TryGetValue(def.Property, out var prop)) { prop.DefaultValue = def.Value; } else { throw new Exception("Unknown Property to Override: " + def.Property); } } }