public FlagSetInputEvaluator(InputValueDef inputDef, TypeRef resultTypeRef, RequestObjectBase anchor, InputValueEvaluator[] valueEvals) : base(inputDef, resultTypeRef, anchor) { ElemEvaluators = valueEvals; EnumTypeDef = (EnumTypeDef)ResultTypeRef.TypeDef; }
private void BuildEnumValues(EnumTypeDef enumTypeDef) { // enum values are static public fields of enum type var fields = enumTypeDef.ClrType.GetFields(BindingFlags.Public | BindingFlags.Static); foreach (var fld in fields) { var attrs = GetAllAttributes(fld); var ignoreAttr = attrs.Find <IgnoreAttribute>(); if (ignoreAttr != null) { continue; } var fldValue = fld.GetValue(null); var longValue = Convert.ToInt64(fldValue); if (longValue == 0 && enumTypeDef.IsFlagSet) { continue; // ignore 'None=0' member in Flags enum } var enumV = new EnumValue() { Name = GetEnumFieldGraphQLName(fld), ClrValue = fldValue, ClrName = fldValue.ToString(), LongValue = longValue, Attributes = attrs, Description = _docLoader.GetDocString(fld, enumTypeDef.ClrType) }; enumV.Directives = BuildDirectivesFromAttributes(fld, DirectiveLocation.EnumValue, enumV); enumTypeDef.EnumValues.Add(enumV); } }
private void BuildEnumType(EnumTypeDef enumTypeDef) { var type_ = enumTypeDef.Type_; foreach (var enumV in enumTypeDef.EnumValues) { var enumV_ = new __EnumValue() { Name = enumV.Name, Description = enumV.Description, }; enumV.Intro_ = enumV_; type_.EnumValues.Add(enumV_); } }
private void BuildEnumType(EnumTypeDef enumTypeDef) { var type_ = enumTypeDef.Type_; foreach (var fld in enumTypeDef.Fields) { var enumV_ = new __EnumValue() { Name = fld.Name, Description = fld.Description, }; fld.Intro_ = enumV_; type_.EnumValues.Add(enumV_); } }
private void BuildEnumTypeFields(EnumTypeDef enumTypeDef) { enumTypeDef.Handler = new EnumHandler(enumTypeDef.ClrType, enumTypeDef.Module.Adjustments); enumTypeDef.Name = enumTypeDef.Handler.EnumName; // Build fieldDefs from EnumInfo.Values foreach (var vi in enumTypeDef.Handler.Values) { var enumFld = new EnumFieldDef() { Name = vi.Name, ValueInfo = vi }; enumFld.Description = _docLoader.GetDocString(enumFld.ValueInfo.Field, enumTypeDef.ClrType); enumFld.Directives = this.BuildDirectivesFromAttributes(enumFld.ValueInfo.Field, DirectiveLocation.EnumValue); enumTypeDef.Fields.Add(enumFld); } }
private object ReadEnum(RequestContext context, EnumTypeDef enumTypeDef, object jsonValue, IList <object> path) { var handler = enumTypeDef.Handler; var src = path.FirstOrDefault()?.ToString(); switch (jsonValue) { case JArray jArr: if (handler.IsFlagSet) { var strArr = jArr.Select(v => v.ToString()).ToArray(); var enumV = handler.ConvertStringListToFlagsEnumValue(strArr); return(enumV); } else { AddError(context, $"Enum {handler.EnumName} is not flag set, array input is invalid; around '{src}'.", path); return(handler.NoneValue); } case JValue jv: if (jv.Value == null) { return(null); } var enumVs = handler.ConvertStringToEnumValue(jv.Value.ToString()); return(enumVs); case string sV: var enumV1 = handler.ConvertStringToEnumValue(sV); return(enumV1); default: AddError(context, $"Invalid value for enum {handler.EnumName}, around {src}.", path); return(handler.NoneValue); } //switch }