/// <summary> /// 获取泛型类型 /// </summary> /// <exception cref="ArgumentException"></exception> /// <exception cref="ArgumentNullException"></exception> private static Type?GetGenericType(string name) { if (IsGenericType(name)) { using (var deco = new TypeDecomposition(new StringReader(name))) { return(deco.FatherType); } } return(null); }
/// <summary> /// 分解 /// </summary> private void Decomposition(TextReader reader) { var temp = -1; var builder = new StringBuilder(); while ((temp = reader.Read()) >= 0) { if (temp == 91) { _generics = new List <TypeDecomposition>(); var deco = new TypeDecomposition(reader); _generics.Add(deco); } else if (temp == 41) { if (_generics == null) { break; } else { _generics.Add(new TypeDecomposition(reader)); } } else if (temp == 93) { break; } else { builder.Append((char)temp); } } _fatherType = JsonType.GetTypeByName(builder.ToString()); if (_generics != null && _generics.Count > 0) { if (_fatherType != null) { var Types = _generics.Select(p => p._fatherType).ToArray(); _fatherType = _fatherType.MakeGenericType(Types); } } }