protected Type GetGraphTypeWithoutNullableInfo(Type rootType, TypeToGraphTypeTransformerOptions options) { var realType = GetRealType(rootType); var graphType = GetGraphTypeFromRealType(realType, options); return(graphType); }
/// <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)); }
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); }
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)); }
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); }
public ExpressionToFieldInfoGenerator(ITypeToGraphTypeTransformer typeToGraphTypeTransformer, TypeToGraphTypeTransformerOptions typeToGraphTypeTransformerOptions) { this.typeToGraphTypeTransformer = typeToGraphTypeTransformer; this.typeToGraphTypeTransformerOptions = typeToGraphTypeTransformerOptions; }