Review finding 10/19 · conventional-comment issue (archi, blocking) · area binder · gate: decide before the v1 API freeze
To add once they exist: labels binder, blocking, archi; milestone v1. (Already applied: bug.)
Problem
ComplexPropertyConverter.AsOptional<TProperty>(...) where TProperty : class both constrains the element to a reference type and occupies the name AsOptional. A future value-type variant cannot reuse the name — two methods differing only by a class vs struct constraint do not overload (CS0111) — exactly the split the scalar side already makes with AsOptionalReference / AsOptionalValue.
Impact
The name AsOptional is a dead end on the complex/list side: once the API freezes, adding value-type support forces either an inconsistent third name or a breaking rename. The scalar and complex sides also read inconsistently (AsOptionalReference vs AsOptional).
Direction
Rename the reference-constrained AsOptional to AsOptionalReference on ComplexProperty (and the complex-list converter), matching the scalar side, before the v1 freeze so the rename is free.
Context
Surfaced by the RequestBinder review (design spec #126, shipped in #141). Finding 10 of 19.
Problem
ComplexPropertyConverter.AsOptional<TProperty>(...) where TProperty : classboth constrains the element to a reference type and occupies the nameAsOptional. A future value-type variant cannot reuse the name — two methods differing only by aclassvsstructconstraint do not overload (CS0111) — exactly the split the scalar side already makes withAsOptionalReference/AsOptionalValue.Impact
The name
AsOptionalis a dead end on the complex/list side: once the API freezes, adding value-type support forces either an inconsistent third name or a breaking rename. The scalar and complex sides also read inconsistently (AsOptionalReferencevsAsOptional).Direction
Rename the reference-constrained
AsOptionaltoAsOptionalReferenceonComplexProperty(and the complex-list converter), matching the scalar side, before the v1 freeze so the rename is free.Context
Surfaced by the RequestBinder review (design spec #126, shipped in #141). Finding 10 of 19.