public sealed class InspectorEditProviderThe editing pipeline's view of what the generator described.
Remarks
The first of doc 36 § D1's providers, and the one that proves the seam is real. Everything it answers comes from a registry a generator filled — module initializers the generator emitted, no reflection pass and no assembly scan — so an EditTarget over a described type finds its members at the cost of a dictionary lookup.
⚠ Two registries, and it used to read one. InspectorRegistry holds what [Inspector] described; TypeRegistry holds what the serialization generator described, and ReflectedDescriptor builds an inspector descriptor out of the second where there is no entry in the first. Reading only the first made the editing pipeline strictly narrower than the panel that draws it: a [DataContract] type with no [Inspector] annotation — a settings asset, which is IEditProvider's own worked example — drew rows and answered with an empty member list, so it had no EditProperty, no undo, no mixed state and no markup binding. ⚠ And it was silent in the direction that looks fine: an empty list is a target with no properties rather than an error.
⚠ The cost sentence above survives the change, which is why the fallback is here rather than in a second provider callers opt into. TypeRegistry is filled by a [ModuleInitializer] the generator emits per assembly — its own remarks say there is no scan and nothing that stops working when the trimmer removes metadata — so "reflected" in ReflectedDescriptor names Vixen.Core.Reflection and not System.Reflection. What this added is a second dictionary lookup on the miss path, and it is cached.
⚠ It is a lookup, not a store. Registration stays where it was; this type adds no second place a member can be declared, which is the mistake the editor already made once with two component registries.
Fields and properties (1)
public static InspectorEditProvider DefaultThe one over the process-wide registry.
Methods (2)
public IReadOnlyList<IEditMember> MembersOf(Type type)public bool TryResolve(Type type, string path, out IEditMember? member)Finds one member of a type by name.
Used by (2)
- InspectorTargetVixen.Editor.Inspector
- ReflectedEditingTestsVixen.Editor.App.Tests