Пример #1
0
        public ObjectType()
        {
            ObjectTypeDescriptor descriptor = CreateDescriptor();

            Configure(descriptor);

            if (string.IsNullOrEmpty(descriptor.Name))
            {
                throw new ArgumentException(
                          "The type name must not be null or empty.");
            }

            if (descriptor.Fields.Count == 0)
            {
                throw new ArgumentException(
                          $"The object type `{Name}` has no fields.");
            }

            List <FieldBinding> fieldBindings = new List <FieldBinding>();

            foreach (FieldDescriptor fieldDescriptor in descriptor.Fields)
            {
                Field field = fieldDescriptor.CreateField();
                _fieldMap[fieldDescriptor.Name] = field;

                if (fieldDescriptor.Member != null)
                {
                    fieldBindings.Add(new FieldBinding(
                                          fieldDescriptor.Name, fieldDescriptor.Member, field));
                }
            }

            if (descriptor.NativeType != null)
            {
                _typeBinding = new ObjectTypeBinding(
                    descriptor.Name, descriptor.NativeType, this, fieldBindings);
            }

            _isOfType         = descriptor.IsOfType;
            _interfaceFactory = r => descriptor.Interfaces
                                .Select(t => t.TypeFactory(r))
                                .Cast <InterfaceType>();
            _interfaceTypeInfos = descriptor.Interfaces;

            Name            = descriptor.Name;
            Description     = descriptor.Description;
            IsIntrospection = descriptor.IsIntrospection;
        }
Пример #2
0
        private void InitializeFields(ObjectTypeDescription description)
        {
            var fieldBindings = new List <FieldBinding>();
            var fields        = new List <ObjectField> {
                new __TypeNameField()
            };

            CreateFieldsAndBindings(description.Fields, fieldBindings, fields);

            if (description.ClrType != null)
            {
                _typeBinding = new ObjectTypeBinding(
                    description.Name, description.ClrType,
                    this, fieldBindings);
            }

            Fields = new FieldCollection <ObjectField>(fields);
        }
Пример #3
0
        private void InitializeFields(ObjectTypeDescriptor descriptor)
        {
            List <FieldBinding> fieldBindings = new List <FieldBinding>();

            foreach (FieldDescriptor fieldDescriptor in descriptor
                     .GetFieldDescriptors())
            {
                Field field = new Field(fieldDescriptor);
                _fieldMap[fieldDescriptor.Name] = field;

                if (fieldDescriptor.Member != null)
                {
                    fieldBindings.Add(new FieldBinding(
                                          fieldDescriptor.Name, fieldDescriptor.Member, field));
                }
            }

            if (descriptor.NativeType != null)
            {
                _typeBinding = new ObjectTypeBinding(
                    descriptor.Name, descriptor.NativeType, this, fieldBindings);
            }
        }