예제 #1
0
        public ITypeBuildingContext ResolveType(string initialUnitPath, Type type, ITypeScriptUnitFactory unitFactory)
        {
            if (InternalApiTypeBuildingContext.Accept(type))
            {
                var targetUnit = unitFactory.GetOrCreateTypeUnit(initialUnitPath);
                return(new InternalApiTypeBuildingContext(targetUnit, type));
            }

            if (type == typeof(Guid))
            {
                return(TypeBuilding.RedirectToType("Guid", @".\DataTypes\Guid", typeof(Guid)));
            }

            if (type == typeof(DateTime))
            {
                return(TypeBuilding.RedirectToType("DateTime", @".\DataTypes\DateTime", typeof(DateTime)));
            }

            if (type == typeof(DateTimeOffset))
            {
                return(TypeBuilding.RedirectToType("DateTime", @".\DataTypes\DateTime", typeof(DateTimeOffset)));
            }

            if (type == typeof(TimeSpan))
            {
                return(TypeBuilding.RedirectToType("TimeSpan", @".\DataTypes\TimeSpan", typeof(TimeSpan)));
            }

            return(null);
        }
예제 #2
0
        public ITypeBuildingContext ResolveType(string initialUnitPath, Type type, ITypeScriptUnitFactory unitFactory)
        {
            if (type == typeof(MethodRootType))
            {
                return(new MethodTypeBuildingContext(unitFactory.GetOrCreateTypeUnit(initialUnitPath), type));
            }

            if (CollectionTypeBuildingContext.Accept(type))
            {
                return(new CollectionTypeBuildingContext(type));
            }

            if (type == typeof(TimeSpan))
            {
                return(new StringBuildingContext());
            }

            if (type.IsAbstract)
            {
                return(new AbstractTypeBuildingContext(unitFactory.GetOrCreateTypeUnit(initialUnitPath), type));
            }

            return(null);
        }
 public ITypeBuildingContext?ResolveType(string initialUnitPath, ITypeGenerator typeGenerator, ITypeInfo type, ITypeScriptUnitFactory unitFactory)
 {
     return(null);
 }
        public virtual ITypeBuildingContext?ResolveType(string initialUnitPath, ITypeGenerator typeGenerator, ITypeInfo typeInfo, ITypeScriptUnitFactory unitFactory)
        {
            if (typeRedirects.TryGetValue(typeInfo, out var redirect))
            {
                return(TypeBuilding.RedirectToType(redirect.Name, redirect.Location, typeInfo));
            }

            var contextCreation = typeBuildingContextRules.SingleOrDefault(x => x.Accept(typeInfo));

            if (contextCreation == null)
            {
                return(null);
            }

            return(contextCreation.CreateContext != null
                       ? contextCreation.CreateContext(typeInfo)
                       : contextCreation.CreateContextWithUnit(unitFactory.GetOrCreateTypeUnit(initialUnitPath), typeInfo));
        }
예제 #5
0
 public ITypeBuildingContext ResolveType(string initialUnitPath, Type type, ITypeScriptUnitFactory unitFactory)
 {
     return(null);
 }
예제 #6
0
 public virtual ITypeBuildingContext?ResolveType(string initialUnitPath, ITypeGenerator typeGenerator, ITypeInfo typeInfo, ITypeScriptUnitFactory unitFactory)
 {
     if (typeRedirects.TryGetValue(typeInfo, out var redirect))
     {
         return(TypeBuilding.RedirectToType(redirect.Name, redirect.Location, typeInfo));
     }
     if (typeBuildingContexts.TryGetValue(typeInfo, out var createContext))
     {
         return(createContext(typeInfo));
     }
     foreach (var typeBuildingContextWithAcceptanceChecking in typeBuildingContextsWithAcceptanceChecking)
     {
         if (typeBuildingContextWithAcceptanceChecking.Accept(typeInfo))
         {
             return(typeBuildingContextWithAcceptanceChecking.CreateContext(unitFactory.GetOrCreateTypeUnit(initialUnitPath), typeInfo));
         }
     }
     return(null);
 }
예제 #7
0
 public ITypeBuildingContext ResolveType(string initialUnitPath, ITypeGenerator typeGenerator, ITypeInfo type, ITypeScriptUnitFactory unitFactory)
 {
     if (type.Equals(TypeInfo.From <TimeGuid>()))
     {
         return(TypeBuilding.RedirectToType("TimeGuid", @"..\DataTypes\TimeGuid", type));
     }
     if (type.Equals(TypeInfo.From <Timestamp>()))
     {
         return(TypeBuilding.RedirectToType("Timestamp", @"..\DataTypes\Timestamp", type));
     }
     if (type.Equals(TypeInfo.From <TimestampRange>()))
     {
         return(TypeBuilding.RedirectToType("DateTimeRange", @"..\DataTypes\DateTimeRange", type));
     }
     if (InternalApiTypeBuildingContext.Accept(type))
     {
         return(new InternalApiTypeBuildingContext(unitFactory.GetOrCreateTypeUnit(initialUnitPath), type));
     }
     return(null);
 }
예제 #8
0
        public ITypeBuildingContext?ResolveType(string initialUnitPath, ITypeGenerator typeGenerator, ITypeInfo typeInfo, ITypeScriptUnitFactory unitFactory)
        {
            if (typeInfo.Equals(TypeInfo.From <MethodRootType>()) || typeInfo.Equals(TypeInfo.From <NullableReferenceMethodType>()))
            {
                return(new MethodTypeBuildingContext(unitFactory.GetOrCreateTypeUnit(initialUnitPath), typeInfo));
            }

            if (CollectionTypeBuildingContext.Accept(typeInfo))
            {
                return(new CollectionTypeBuildingContext(typeInfo));
            }

            if (typeInfo.Equals(TypeInfo.From <TimeSpan>()))
            {
                return(new StringBuildingContext(typeInfo));
            }

            if (typeInfo.IsAbstract)
            {
                return(new AbstractTypeBuildingContext(unitFactory.GetOrCreateTypeUnit(initialUnitPath), typeInfo));
            }

            return(null);
        }
예제 #9
0
 public ITypeBuildingContext ResolveType([NotNull] string initialUnitPath, [NotNull] Type type, [NotNull] ITypeScriptUnitFactory unitFactory)
 {
     return(null);
 }
        public ITypeBuildingContext ResolveType(string initialUnitPath, ITypeGenerator typeGenerator, ITypeInfo type, ITypeScriptUnitFactory unitFactory)
        {
            if (InternalApiTypeBuildingContext.Accept(type))
            {
                return(new InternalApiTypeBuildingContext(unitFactory.GetOrCreateTypeUnit(initialUnitPath), type));
            }

            return(null);
        }