in src/languages/csharp.ts [256:292]
public override propertyDeclaration(node: ts.PropertyDeclaration, renderer: CSharpRenderer): OTree {
const vis = visibility(node);
const propertyOrMethod = vis !== 'private'; // Capitalize non-private fields
if (vis === 'private' || node.initializer) {
// Emit member field
return new OTree(
[
vis,
isReadOnly(node) ? ' readonly' : '',
' ',
this.renderTypeNode(node.type, node.questionToken !== undefined, renderer),
' ',
renderer.updateContext({ propertyOrMethod }).convert(node.name),
...(node.initializer ? [' = ', renderer.convert(node.initializer)] : []),
';',
],
[],
{ canBreakLine: true },
);
}
// Emit property. No functional difference but slightly more idiomatic
return new OTree(
[
vis,
' ',
this.renderTypeNode(node.type, node.questionToken !== undefined, renderer),
' ',
renderer.updateContext({ propertyOrMethod }).convert(node.name),
' ',
isReadOnly(node) ? '{ get; }' : '{ get; set; }',
],
[],
{ canBreakLine: true },
);
}