/// <summary> /// Creates a TsCollection from TsType /// </summary> /// <param name="type"></param> /// <returns></returns> private TsCollection CreateCollectionType(TsType type) { var resolved = new TsCollection(type.Type); resolved.ItemsType = this.ResolveType(resolved.ItemsType, false); return resolved; }
public void WhenInitilized_ClrTypeIsSet() { var type = typeof(string); var target = new TsType(type); Assert.Equal(type, target.Type); }
/// <summary> /// Resolves TsType to the more specialized type. /// </summary> /// <param name="toResolve">The type to resolve.</param> /// <returns></returns> private TsType ResolveType(TsType toResolve, bool useOpenGenericDefinition = true) { if (!(toResolve is TsType)) { return toResolve; } if (_knownTypes.ContainsKey(toResolve.Type)) { return _knownTypes[toResolve.Type]; } else if (toResolve.Type.IsGenericType && useOpenGenericDefinition) { // We stored its open type definition instead TsType openType = null; if (_knownTypes.TryGetValue(toResolve.Type.GetGenericTypeDefinition(), out openType)) { return openType; } } else if (toResolve.Type.IsGenericType) { var genericType = TsType.Create(toResolve.Type); _knownTypes[toResolve.Type] = genericType; return genericType; } var typeFamily = TsType.GetTypeFamily(toResolve.Type); TsType type = null; switch (typeFamily) { case TsTypeFamily.System: type = new TsSystemType(toResolve.Type); break; case TsTypeFamily.Collection: type = this.CreateCollectionType(toResolve); break; case TsTypeFamily.Enum: type = new TsEnum(toResolve.Type); break; default: type = TsType.Any; break; } _knownTypes[toResolve.Type] = type; return type; }