Beispiel #1
0
        protected Type GetGraphTypeWithoutNullableInfo(Type rootType, TypeToGraphTypeTransformerOptions options)
        {
            var realType  = GetRealType(rootType);
            var graphType = GetGraphTypeFromRealType(realType, options);

            return(graphType);
        }
Beispiel #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="originType"></param>
 /// <param name="hasDefaultValue"></param>
 /// <param name="customAttributes"></param>
 /// <param name="options"></param>
 /// <returns></returns>
 public Type GetGraphType(
     Type originType,
     bool hasDefaultValue,
     IEnumerable <CustomAttributeData> customAttributes,
     TypeToGraphTypeTransformerOptions options)
 {
     return(options.AddNullableInfo && !hasDefaultValue
         ? GetGraphTypeWithNullableInfo(originType, customAttributes, options)
         : GetGraphTypeWithoutNullableInfo(originType, options));
 }
Beispiel #3
0
        protected Type GetGraphTypeFromRealType(Type realType, TypeToGraphTypeTransformerOptions options)
        {
            var isTypeList = IsTypeList(realType);

            if (isTypeList)
            {
                var genericType = typeof(ListGraphType <>);
                var clrType     = realType.IsArray ? realType.GetElementType() : realType.GenericTypeArguments.First();

                realType = GetRealType(clrType);

                typeMappings.TryGetValue(realType, out Type graphType);

                if (options.AddNullableInfo && !IsTypeNullable(clrType, clrType))
                {
                    graphType = GenerateNonNullGraphType(graphType);
                }

                Type[] typeArgs  = { graphType };
                var    finalType = genericType.MakeGenericType(typeArgs);
                return(finalType);
            }

            if (realType == typeof(DateTime))
            {
                return(typeof(DateTimeGraphType));
            }

            if (realType.IsEnum)
            {
                var    gType     = typeof(EnumerationGraphType <>);
                Type[] typeArgs  = { realType };
                var    finalType = gType.MakeGenericType(typeArgs);
                return(finalType);
            }

            return(typeMappings.ContainsKey(realType) ? typeMappings[realType] : null);
        }
Beispiel #4
0
        protected Type GetGraphTypeFromRealType(Type realType, TypeToGraphTypeTransformerOptions options)
        {
            var isTypeList = this.IsTypeList(realType);

            if (isTypeList)
            {
                var gType   = typeof(ListGraphType <>);
                var clrType = realType.IsArray ? realType.GetElementType() : realType.GenericTypeArguments.First();

                realType = this.GetRealType(clrType);

                var graphType = GraphTypeTypeRegistry.Get(realType);

                if (options.AddNullableInfo && !this.IsTypeNullable(clrType, clrType))
                {
                    graphType = GenerateNonNullGraphType(graphType);
                }

                Type[] typeArgs  = { graphType };
                var    finalType = gType.MakeGenericType(typeArgs);
                return(finalType);
            }

            if (realType == typeof(DateTime))
            {
                return(typeof(DateTimeGraphType));
            }
            if (realType.IsEnum)
            {
                var    gType     = typeof(EnumerationGraphType <>);
                Type[] typeArgs  = { realType };
                var    finalType = gType.MakeGenericType(typeArgs);
                return(finalType);
            }

            return(GraphTypeTypeRegistry.Get(realType));
        }
Beispiel #5
0
        protected Type GetGraphTypeWithNullableInfo(Type rootType, IEnumerable <CustomAttributeData> customAttributes, TypeToGraphTypeTransformerOptions options)
        {
            var realType  = GetRealType(rootType);
            var graphType = GetGraphTypeFromRealType(realType, options);

            var isNullable = IsNullable(rootType, realType, customAttributes);

            if (!isNullable)
            {
                graphType = GenerateNonNullGraphType(graphType);
            }

            return(graphType);
        }
Beispiel #6
0
 public ExpressionToFieldInfoGenerator(ITypeToGraphTypeTransformer typeToGraphTypeTransformer, TypeToGraphTypeTransformerOptions typeToGraphTypeTransformerOptions)
 {
     this.typeToGraphTypeTransformer        = typeToGraphTypeTransformer;
     this.typeToGraphTypeTransformerOptions = typeToGraphTypeTransformerOptions;
 }