public sealed class ComponentEmitterTurns a BoundComponent into the C# partial class that builds it.
No guide page documents this yet — the page shows what the code says about itself.
Remarks
Per ADR-010 the output is imperative construction code, not a virtual DOM: one statement per element, one effect per dynamic expression. Setting a signal invalidates exactly that effect, which assigns exactly that property — no tree walk and no diff.
Every fragment of C# that came from the .vxml is emitted under a #line span directive. That is the detail the whole approach rests on: it is what lets the binder do no type resolution at all, because a misspelt component, an unknown parameter and a wrong expression type are then reported by Roslyn against the exact characters the author wrote — not against generated code they have never seen.
The directives use the span form (#line (l,c)-(l,c) offset "file") rather than the line form. The line form would land a squiggle at the start of a generated line, which for ctx.Bind(n3, "class", () => kind) is several tokens away from the one word that came out of the markup.
Fields and properties (1)
public const string RuntimeNamespaceThe namespace the generated code expects its runtime in.
Methods (1)
public static string Emit(BoundComponent component, string filePath, string? namespace = null)Emits a bound component as C#.
Used by (2)
- EmitterTestsVixen.Ui.Markup.Tests
- VxmlGeneratorVixen.Ui.Markup.Generators