public override propertyDeclaration()

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 },
    );
  }