public bool TryGetScalarGraphType(out Type type) { type = OverriddenGraphType; if (type != null) { return(true); } if (!_scalarTypeMap.TryGetGraphType(Property.PropertyType, out type)) { return(false); } if (Nullability == Nullability.Unspecified) { return(true); } if (Nullability == Nullability.NonNull) { type = type.MakeNonNullable(); } else if (Nullability == Nullability.Nullable) { type = type.UnwrapNonNullable(); } return(true); }
protected override IGraphType GetGraphType(GraphTypeCache cache, IServiceCollection services) { if (_scalarTypeMap.TryGetGraphType(typeof(TProp), out var scalarGraphType)) { var listGraphType = typeof(ListGraphType <>).MakeGenericType(scalarGraphType); var listTypeInstance = (ListGraphType)Activator.CreateInstance(listGraphType); listTypeInstance.ResolvedType = (IGraphType)Activator.CreateInstance(scalarGraphType); if (listTypeInstance.ResolvedType is NonNullGraphType elemTypeInstance) { elemTypeInstance.ResolvedType = (IGraphType)Activator.CreateInstance(scalarGraphType.GetGenericArguments().Single()); } return(listTypeInstance); } return(new ListGraphType(cache.GetOrCreate(typeof(TProp), services))); }