Example #1
0
        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);
                }
            }
        }
Example #2
0
        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());
                }
            }
        }