public __Type(Type t, Dictionary <Type, __Type> resolver, GraphQlCustomiseSchema customise, bool isInputType = false) { this.resolver = resolver; this.customiseSchema = customise; dotNetType = t; if (resolver.ContainsKey(t) == false) { resolver[t] = this; } if (TypeCheck.IsNumeric(t) || TypeCheck.IsString(t) || TypeCheck.IsDateTime(t) || TypeCheck.IsBoolean(t)) { ScalarType(); } else if (TypeCheck.IsEnum(t)) { EnumType(); } else if (TypeCheck.IsEnumerableType(t)) { ListType(); } else if (TypeCheck.IsClass(t) && isInputType) { InputObjectType(); } else if (TypeCheck.IsClass(t)) { ObjectOrInterfaceType(__TypeKind.OBJECT); } else if (t.IsInterface) { ObjectOrInterfaceType(__TypeKind.INTERFACE); } else if (TypeCheck.IsValueType(t)) { throw new Exception($"Unexpected value type = {t.Name}"); } else { throw new Exception($"Unexpected type = {t.Name}"); } }