ParameterDescriptor
One modifier parameter: the unit through which markup tokens, rule defaults, the modifier field, and per-range ownership resolve to a single value.
Remarks
Descriptors. The cascade resolves, weakest first: the modifier field, the rule's default token, the explicit markup token, and finally owned values composed on top. Its invalidation is the field's own declared change notification, so a write through any stage raises exactly what a field write raises.Derived Types(1)
Types that inherit from ParameterDescriptor.
Markup slot among the declaring type's own parameters, or -1 when the parameter has no markup presence; SlotOn gives its slot on a concrete modifier.
public Type ValueType{ get }Concrete value type.
public Type ModifierType{ get }Modifier type declaring this parameter.
public ParameterCompositions SupportedCompositions{ get; set }Operations owned values may compose with.
public abstract void Invalidate(BaseModifier modifier)Raises the owning modifier's declared invalidation for this parameter.
public static ParameterDescriptor Find(BaseModifier modifier, string id)Finds a descriptor by Id in a modifier's declared set, or null.
public static ParameterDescriptor<TModifier,TValue> From(StateAccessor<TModifier,TValue> accessor, int slot, Action<TModifier> invalidate = null)Creates a descriptor at one of its declaring type's own markup slots; -1 declares a parameter without markup presence.
public static ParameterDescriptor<TModifier,TValue> Custom(string id, Func<TModifier,TValue> getRoot, Action<TModifier,TValue> setRoot, Action<TModifier> invalidate, int slot = -1, PropertyValueAdapter<TValue> values = null)Creates a descriptor over explicit delegates, for parameters whose root lives in nested state rather than a direct field of the modifier.
public static ParameterDescriptor<TModifier,TValue> FromEnum(StateAccessor<TModifier,TValue> accessor, int slot, Action<TModifier> invalidate = null)Creates a descriptor for an enum parameter, parsed by member name or unique initial, at one of its declaring type's own markup slots; -1 declares a parameter without markup presence.
public int SlotOn(BaseModifier modifier)Positional markup slot of this parameter on modifier's concrete type. A subclass's own parameters precede inherited ones in the markup contract, so a base-declared parameter sits later on a subclass range than Slot says.
