示例#1
0
        private void RegisterDependencies(
            IInitializationContext context,
            InterfaceTypeDefinition definition)
        {
            var dependencies = new List <ITypeReference>();

            context.RegisterDependencyRange(
                definition.Fields.Select(t => t.Type),
                TypeDependencyKind.Default);

            context.RegisterDependencyRange(
                definition.Fields.SelectMany(t => t.Arguments)
                .Select(t => t.Type),
                TypeDependencyKind.Completed);

            context.RegisterDependencyRange(
                definition.Directives.Select(t => t.TypeReference),
                TypeDependencyKind.Completed);

            context.RegisterDependencyRange(
                definition.Fields.SelectMany(t => t.Directives)
                .Select(t => t.TypeReference),
                TypeDependencyKind.Completed);

            context.RegisterDependencyRange(
                definition.Fields.SelectMany(t => t.Arguments)
                .SelectMany(t => t.Directives)
                .Select(t => t.TypeReference),
                TypeDependencyKind.Completed);
        }
        protected override void OnRegisterDependencies(
            IInitializationContext context,
            SchemaTypeDefinition definition)
        {
            base.OnRegisterDependencies(context, definition);

            context.RegisterDependencyRange(
                definition.Directives.Select(t => t.TypeReference),
                TypeDependencyKind.Completed);

            context.RegisterDependencyRange(
                definition.Directives.Select(t => t.Reference));
        }
示例#3
0
        public static void RegisterDependencies(
            this IInitializationContext context,
            InputObjectTypeDefinition definition)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            RegisterDirectiveDependencies(context, definition);

            foreach (InputFieldDefinition field in definition.Fields)
            {
                if (field.Type != null)
                {
                    context.RegisterDependency(field.Type,
                                               TypeDependencyKind.Default);
                }

                context.RegisterDependencyRange(
                    field.Directives.Select(t => t.TypeReference),
                    TypeDependencyKind.Completed);
            }
        }
示例#4
0
        public static void RegisterDependencies(
            this IInitializationContext context,
            ObjectTypeDefinition definition)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            context.RegisterDependencyRange(
                definition.Interfaces,
                TypeDependencyKind.Default);

            RegisterDirectiveDependencies(context, definition);
            RegisterFieldDependencies(context, definition.Fields);

            foreach (ObjectFieldDefinition field in definition.Fields)
            {
                if (field.Member != null)
                {
                    context.RegisterResolver(
                        field.Name,
                        field.Member,
                        definition.ClrType,
                        field.ResolverType);
                }
            }
        }
示例#5
0
        protected override void OnRegisterDependencies(
            IInitializationContext context,
            UnionTypeDefinition definition)
        {
            base.OnRegisterDependencies(context, definition);

            context.RegisterDependencyRange(
                definition.Types,
                TypeDependencyKind.Default);

            context.RegisterDependencyRange(
                definition.Directives.Select(t => t.TypeReference),
                TypeDependencyKind.Completed);

            SetTypeIdentity(typeof(UnionType <>));
        }
示例#6
0
 private static void RegisterAdditionalDependencies(
     this IInitializationContext context,
     DefinitionBase definition)
 {
     context.RegisterDependencyRange(
         definition.Dependencies);
 }
示例#7
0
 private static void RegisterDirectiveDependencies <T>(
     this IInitializationContext context,
     TypeDefinitionBase <T> definition)
     where T : class, ISyntaxNode
 {
     context.RegisterDependencyRange(
         definition.Directives.Select(t => t.TypeReference),
         TypeDependencyKind.Completed);
 }
示例#8
0
        private void RegisterDependencies(
            IInitializationContext context,
            DirectiveTypeDefinition definition)
        {
            var dependencies = new List <ITypeReference>();

            context.RegisterDependencyRange(
                definition.Arguments.Select(t => t.Type),
                TypeDependencyKind.Completed);
        }
        protected override void OnRegisterDependencies(
            IInitializationContext context,
            InputObjectTypeDefinition definition)
        {
            base.OnRegisterDependencies(context, definition);

            context.RegisterDependencyRange(
                definition.Fields.Select(t => t.Type),
                TypeDependencyKind.Default);

            context.RegisterDependencyRange(
                definition.Directives.Select(t => t.TypeReference),
                TypeDependencyKind.Completed);

            context.RegisterDependencyRange(
                definition.Fields.SelectMany(t => t.Directives)
                .Select(t => t.TypeReference),
                TypeDependencyKind.Completed);
        }
 private void RegisterConfigurationDependencies(
     IInitializationContext context)
 {
     foreach (var group in
              _configrations.SelectMany(t => t.Dependencies)
              .GroupBy(t => t.Kind))
     {
         context.RegisterDependencyRange(
             group.Select(t => t.TypeReference),
             group.Key);
     }
 }
示例#11
0
 private static void RegisterConfigurationDependencies(
     IInitializationContext context,
     TDefinition definition)
 {
     foreach (var group in definition.GetConfigurations()
              .SelectMany(t => t.Dependencies)
              .GroupBy(t => t.Kind))
     {
         context.RegisterDependencyRange(
             group.Select(t => t.TypeReference),
             group.Key);
     }
 }
示例#12
0
        protected override void OnRegisterDependencies(
            IInitializationContext context,
            TDefinition definition)
        {
            base.OnRegisterDependencies(context, definition);

            ClrType = definition is IHasClrType clr && clr.ClrType != GetType()
                ? clr.ClrType
                : typeof(object);

            context.RegisterDependencyRange(
                definition.Directives.Select(t => t.Reference));
        }
示例#13
0
        private static void RegisterEnumValueDependencies(
            this IInitializationContext context,
            IEnumerable <EnumValueDefinition> enumValues)
        {
            foreach (EnumValueDefinition enumValue in enumValues)
            {
                RegisterAdditionalDependencies(context, enumValue);

                context.RegisterDependencyRange(
                    enumValue.Directives.Select(t => t.TypeReference),
                    TypeDependencyKind.Completed);
            }
        }
示例#14
0
        private static void RegisterFieldDependencies(
            this IInitializationContext context,
            IEnumerable <ArgumentDefinition> fields)
        {
            foreach (ArgumentDefinition field in fields)
            {
                if (field.Type != null)
                {
                    context.RegisterDependency(field.Type,
                                               TypeDependencyKind.Completed);
                }

                context.RegisterDependencyRange(
                    field.Directives.Select(t => t.TypeReference),
                    TypeDependencyKind.Completed);
            }
        }
示例#15
0
        private static void RegisterFieldDependencies(
            this IInitializationContext context,
            IEnumerable <OutputFieldDefinitionBase> fields)
        {
            foreach (OutputFieldDefinitionBase field in fields)
            {
                if (field.Type != null)
                {
                    context.RegisterDependency(field.Type,
                                               TypeDependencyKind.Default);
                }

                context.RegisterDependencyRange(
                    field.Directives.Select(t => t.TypeReference),
                    TypeDependencyKind.Completed);

                RegisterFieldDependencies(context,
                                          fields.SelectMany(t => t.Arguments).ToList());
            }
        }
示例#16
0
        public static void RegisterDependencies(
            this IInitializationContext context,
            InterfaceTypeDefinition definition)
        {
            if (context == null)
            {
                throw new ArgumentNullException(nameof(context));
            }

            if (definition == null)
            {
                throw new ArgumentNullException(nameof(definition));
            }

            context.RegisterDependencyRange(
                definition.Interfaces,
                TypeDependencyKind.Default);

            RegisterAdditionalDependencies(context, definition);
            RegisterDirectiveDependencies(context, definition);
            RegisterFieldDependencies(context, definition.Fields);
        }