private IEnumerable <InputFieldBinding> CreateInputFieldBindings( TypeBindingInfo typeBindingInfo, IReadOnlyDictionary <string, InputField> fields) { Dictionary <string, InputFieldBinding> fieldBindings = new Dictionary <string, InputFieldBinding>(); // create explicit field bindings foreach (FieldBindingInfo fieldBindingInfo in typeBindingInfo.Fields) { if (fieldBindingInfo.Name == null) { fieldBindingInfo.Name = GetNameFromMember( fieldBindingInfo.Member); } if (fields.TryGetValue(fieldBindingInfo.Name, out InputField field)) { if (fieldBindingInfo.Member is PropertyInfo p) { fieldBindings[field.Name] = new InputFieldBinding( fieldBindingInfo.Name, p, field); } // TODO : error -> exception? } } // create implicit field bindings if (typeBindingInfo.Behavior == BindingBehavior.Implicit) { Dictionary <string, PropertyInfo> properties = GetProperties(typeBindingInfo.Type); foreach (InputField field in fields.Values .Where(t => !fieldBindings.ContainsKey(t.Name))) { if (properties.TryGetValue(field.Name, out PropertyInfo property)) { fieldBindings[field.Name] = new InputFieldBinding( field.Name, property, field); } } } return(fieldBindings.Values); }
public BindField( TypeBindingInfo bindingInfo, FieldBindingInfo fieldBindingInfo) { if (bindingInfo == null) { throw new ArgumentNullException(nameof(bindingInfo)); } if (fieldBindingInfo == null) { throw new ArgumentNullException(nameof(fieldBindingInfo)); } _bindingInfo = bindingInfo; _fieldBindingInfo = fieldBindingInfo; }
private IEnumerable <InputFieldBinding> CreateInputFieldBindings( TypeBindingInfo typeBindingInfo, FieldCollection <InputField> fields) { var fieldBindings = new Dictionary <string, InputFieldBinding>(); // create explicit field bindings foreach (FieldBindingInfo fieldBindingInfo in typeBindingInfo.Fields) { if (fieldBindingInfo.Name == null) { fieldBindingInfo.Name = fieldBindingInfo.Member.GetGraphQLName(); } if (fields.TryGetField( fieldBindingInfo.Name, out InputField field) && fieldBindingInfo.Member is PropertyInfo p) { fieldBindings[field.Name] = new InputFieldBinding( fieldBindingInfo.Name, p, field); } } // create implicit field bindings if (typeBindingInfo.Behavior == BindingBehavior.Implicit) { Dictionary <string, PropertyInfo> properties = ReflectionUtils.GetProperties(typeBindingInfo.Type); foreach (InputField field in fields .Where(t => !fieldBindings.ContainsKey(t.Name))) { if (properties.TryGetValue(field.Name, out PropertyInfo property)) { fieldBindings[field.Name] = new InputFieldBinding( field.Name, property, field); } } } return(fieldBindings.Values); }
private IEnumerable <FieldBinding> CreateFieldBindings( TypeBindingInfo typeBindingInfo, FieldCollection <ObjectField> fields) { var fieldBindings = new Dictionary <string, FieldBinding>(); // create explicit field bindings foreach (FieldBindingInfo fieldBindingInfo in typeBindingInfo.Fields) { if (fieldBindingInfo.Name == null) { fieldBindingInfo.Name = fieldBindingInfo.Member.GetGraphQLName(); } if (fields.TryGetField( fieldBindingInfo.Name, out ObjectField field)) { fieldBindings[field.Name] = new FieldBinding( fieldBindingInfo.Name, fieldBindingInfo.Member, field); } } // create implicit field bindings if (typeBindingInfo.Behavior == BindingBehavior.Implicit) { Dictionary <string, MemberInfo> members = ReflectionUtils.GetMembers(typeBindingInfo.Type); foreach (ObjectField field in fields .Where(t => !fieldBindings.ContainsKey(t.Name))) { if (members.TryGetValue(field.Name, out MemberInfo member)) { fieldBindings[field.Name] = new FieldBinding( field.Name, member, field); } } } return(fieldBindings.Values); }
private IEnumerable <FieldBinding> CreateFieldBindings( TypeBindingInfo typeBindingInfo, IReadOnlyDictionary <string, Field> fields) { Dictionary <string, FieldBinding> fieldBindings = new Dictionary <string, FieldBinding>(); // create explicit field bindings foreach (FieldBindingInfo fieldBindingInfo in typeBindingInfo.Fields) { if (fieldBindingInfo.Name == null) { fieldBindingInfo.Name = GetNameFromMember( fieldBindingInfo.Member); } if (fields.TryGetValue(fieldBindingInfo.Name, out Field field)) { fieldBindings[field.Name] = new FieldBinding( fieldBindingInfo.Name, fieldBindingInfo.Member, field); } } // create implicit field bindings if (typeBindingInfo.Behavior == BindingBehavior.Implicit) { Dictionary <string, MemberInfo> members = GetMembers(typeBindingInfo.Type); foreach (Field field in fields.Values .Where(t => !fieldBindings.ContainsKey(t.Name))) { if (members.TryGetValue(field.Name, out MemberInfo member)) { fieldBindings[field.Name] = new FieldBinding( field.Name, member, field); } } } return(fieldBindings.Values); }