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; }
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); }
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); } }