/// <summary> /// Writes this ExtendedTypeName into the provided StringBuilder. /// </summary> /// <param name="b">The target.</param> /// <param name="nameReplacer">Optional naked type name replacer function.</param> /// <returns>The StringBuilder to enable fluent syntax.</returns> public StringBuilder Write(StringBuilder b, Func <string, string>?nameReplacer = null) { if (b == null) { throw new ArgumentNullException(nameof(b)); } if (IsTuple) { Debug.Assert(TupleTypeName != null); TupleTypeName.Write(b, nameReplacer); } else if (TypeName != null) { TypeName.Write(b, nameReplacer); } else { Debug.Assert(ItemArrayType != null); ItemArrayType.Write(b, nameReplacer); } foreach (int d in ArrayDimensions) { b.Append('[').Append(',', d).Append(']'); } if (IsNullable) { b.Append('?'); } return(b); }
/// <summary> /// Initializes a new <see cref="ExtendedTypeName"/> for a <see cref="TupleTypeName"/>. /// </summary> /// <param name="tuple">The tuple.</param> /// <param name="isNullable">True to specify an explicit nullable type.</param> public ExtendedTypeName(TupleTypeName tuple, bool isNullable = false) { TupleTypeName = tuple ?? throw new ArgumentNullException(nameof(tuple)); IsNullable = isNullable; ArrayDimensions = Array.Empty <int>(); }