示例#1
0
 /// <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);
 }
示例#2
0
 /// <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>();
 }