示例#1
0
        private void Initialize(Action <IInterfaceTypeDescriptor> configure)
        {
            if (configure == null)
            {
                throw new ArgumentNullException(nameof(configure));
            }

            InterfaceTypeDescriptor descriptor = CreateDescriptor();

            configure(descriptor);

            InterfaceTypeDescription description =
                descriptor.CreateDescription();

            _resolveAbstractType = description.ResolveAbstractType;

            SyntaxNode = description.SyntaxNode;
            Fields     = new FieldCollection <InterfaceField>(
                description.Fields.Select(t => new InterfaceField(t)));

            Initialize(description.Name, description.Description,
                       new DirectiveCollection(this,
                                               DirectiveLocation.Interface,
                                               description.Directives));
        }
示例#2
0
        public InterfaceType()
        {
            InterfaceTypeDescriptor descriptor = new InterfaceTypeDescriptor(GetType());

            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 interface type `{Name}` has no fields.");
            }

            foreach (Field field in descriptor.Fields.Select(t => t.CreateField()))
            {
                _fieldMap[field.Name] = field;
            }

            _resolveAbstractType = descriptor.ResolveAbstractType;

            Name        = descriptor.Name;
            Description = descriptor.Description;
        }
示例#3
0
        private void Initialize(Action <IInterfaceTypeDescriptor> configure)
        {
            InterfaceTypeDescriptor descriptor =
                new InterfaceTypeDescriptor(GetType());

            configure(descriptor);
            Initialize(descriptor);
        }
示例#4
0
 protected override InterfaceTypeDefinition CreateDefinition(
     IInitializationContext context)
 {
     var descriptor = InterfaceTypeDescriptor.New(
         context.DescriptorContext);
     _configure(descriptor);
     return descriptor.CreateDefinition();
 }
示例#5
0
        protected override InterfaceTypeDefinition CreateDefinition(
            ITypeDiscoveryContext context)
        {
            var descriptor = InterfaceTypeDescriptor.New <T>(
                context.DescriptorContext);

            _configure(descriptor);
            return(descriptor.CreateDefinition());
        }
示例#6
0
        protected override InterfaceTypeDefinition CreateDefinition(
            IInitializationContext context)
        {
            var descriptor = InterfaceTypeDescriptor.FromSchemaType(
                context.DescriptorContext,
                GetType());

            _configure(descriptor);
            return(descriptor.CreateDefinition());
        }
示例#7
0
        protected override InterfaceTypeDefinition CreateDefinition(
            IInitializationContext context)
        {
            var descriptor =
                InterfaceTypeDescriptor.New <T>(
                    DescriptorContext.Create(context.Services));

            _configure(descriptor);
            return(descriptor.CreateDefinition());
        }
示例#8
0
        public void Ignore_ExpressionIsNull_ArgumentNullException()
        {
            // arrange
            var descriptor = InterfaceTypeDescriptor.New<IFoo>(DescriptorContext.Create());

            // act
            void Action() => descriptor.Ignore(null);

            // assert
            Assert.Throws<ArgumentNullException>(Action);
        }
示例#9
0
        public void Ignore_ExpressionIsNull_ArgumentNullException()
        {
            // arrange
            InterfaceTypeDescriptor <IFoo> descriptor =
                InterfaceTypeDescriptor.New <IFoo>(DescriptorContext.Create());

            // act
            Action action = () =>
                            InterfaceTypeDescriptorExtensions
                            .Ignore(descriptor, null);

            // assert
            Assert.Throws <ArgumentNullException>(action);
        }
示例#10
0
        private void Initialize(InterfaceTypeDescriptor descriptor)
        {
            if (string.IsNullOrEmpty(descriptor.Name))
            {
                throw new ArgumentException(
                          "The type name must not be null or empty.");
            }

            foreach (Field field in descriptor.Fields
                     .Select(t => new Field(t)))
            {
                _fieldMap[field.Name] = field;
            }

            _resolveAbstractType = descriptor.ResolveAbstractType;

            SyntaxNode  = descriptor.SyntaxNode;
            Name        = descriptor.Name;
            Description = descriptor.Description;
        }
        protected override InterfaceTypeDefinition CreateDefinition(
            ITypeDiscoveryContext context)
        {
            try
            {
                if (Definition is null)
                {
                    var descriptor = InterfaceTypeDescriptor.FromSchemaType(
                        context.DescriptorContext,
                        GetType());
                    _configure !(descriptor);
                    return(descriptor.CreateDefinition());
                }

                return(Definition);
            }
            finally
            {
                _configure = null;
            }
        }