/// <summary> /// 读取成员声明。 /// </summary> /// <param name="reader">源代码读取器。</param> /// <param name="ends">结束符列表。</param> /// <returns>返回当前声明字符串。</returns> public static string ReadDeclaration(this SourceReader reader, params char[] ends) { ends = ends.Concat(new[] { '<', ' ', '[' }).Distinct().ToArray(); var builder = new StringBuilder(); reader.EscapeWhiteSpace(); builder.Append(reader.ReadUntil(ends)); switch (reader.Current) { case ' ': reader.EscapeWhiteSpace(); if (reader.IsNext('<')) //泛型类型List <string> { builder.Append(reader.ReadQuoteBlock('<', '>')); } else if (reader.IsNext('[')) //数组 { builder.Append(reader.ReadChars(']', new[] { '[', ',', ' ' })); } break; case '<': //泛型类型List<string> builder.Append(reader.ReadQuoteBlock('<', '>')); break; case '[': //数组 builder.Append(reader.ReadChars(']', new[] { '[', ',', ' ' })); break; } reader.EscapeWhiteSpace(); return(builder.ToString().Trim()); }