Forwarding Wrapper Family Map

one canonical wrapped identity, retained through an exact public decorator

Forwarding Wrapper Family Map one canonical wrapped identity, retained through an exact public decorator Forwarding Wrapper Family Map one canonical wrapped identity, retained through an exact public decorator Wrapper contracts Ownership and override seams Best-fit wrapper use cases ForwardingComponentVM<M> wraps component contract delegates by default override selected members ForwardingCompositeVM<VM> wraps composite contract forwards Current + iteration decorates child access Inner VM canonical implementation owns real state publishes real messages Public facade same conceptual surface narrow host policy no copied VM logic Canonical ownership inner + decorators = one owner old composite/group detaches destination keeps exact wrapper Property forwarding model/current/name/hint per-instance propertyChanged hub messages unchanged Command wrapping gate existing command log or meter execution policy before delegate Selective override small behavior patch adapter-specific shape test seam without fork Instrumentation logging metrics diagnostic traces Policy authorization feature flags confirmation gates Host adaptation framework bridge narrow facade legacy integration Five-flavor invariant · C# · Python · TypeScript · Swift · Rust Attach bare inner → wrapper → alternate wrapper: exactly one container owns the canonical identity at every commit. same pattern wraps exposes delegate mirror wrap calls override policy hooks host seam

Composition first

  • Wrappers hold an inner VM and delegate by default.
  • The inner VM remains the source of state and messages.
  • A collection retains the exact decorator it was given.

Two contracts

  • ForwardingComponentVM decorates component-shaped surfaces.
  • ForwardingCompositeVM decorates child-list and Current-selection surfaces.
  • Bare and multiply decorated aliases share one transferable owner.

Best fit

  • Use wrappers for logging, policy, host adaptation, and compatibility seams.
  • Do not copy VM internals just to intercept one property or command.
  • Prefer a specialized VM only when the workflow is reusable in its own right.