private static void RegisterResolverFields( NameString typeName, ResolverTypeBindingInfo resolverBinding, IDictionary <NameString, RegisteredResolver> registerdResolvers, IDictionary <NameString, MemberInfo> members) { foreach (ResolverFieldBindingInfo field in resolverBinding.Fields) { if (!registerdResolvers.ContainsKey(field.FieldName)) { IFieldReference fieldReference = field.ResolverMember == null ? (IFieldReference) new FieldResolver( typeName, field.FieldName, field.ResolverDelegate) : new FieldMember( typeName, field.FieldName, field.ResolverMember); registerdResolvers.Add(field.FieldName, new RegisteredResolver( resolverBinding.ResolverType, resolverBinding.SourceType, fieldReference)); } if (!members.ContainsKey(field.FieldName)) { members.Add(field.FieldName, field.FieldMember); } } }
private void AddImplicitResolverBindings( ITypeInspector inspector, INamingConventions naming, ResolverTypeBindingInfo binding) { var names = new HashSet <NameString>( binding.Fields.Select(t => t.FieldName)); foreach (MemberInfo member in inspector.GetMembers(binding.ResolverType)) { NameString fieldName = naming.GetMemberName(member, MemberKind.ObjectField); if (names.Add(fieldName)) { var builder = ResolverFieldBindingBuilder.New(); builder.SetResolver(member); builder.SetField(fieldName); binding.Fields = binding.Fields.Add(builder.Create()); } } }