コード例 #1
0
        public ComplexGraphType <TModel> BuildGraphType(GraphTypeCache cache, IServiceCollection services)
        {
            var graphType = CreateGraphTypeCore(cache, services);

            graphType.Name        = GraphTypeName;
            graphType.Description = typeof(TModel).GetCustomAttribute <DescriptionAttribute>()?.Description;

            if (!cache.TryPrime(graphType))
            {
                return(cache.GetOrCreate <TModel> (services));
            }

            foreach (var prop in typeof(TModel).GetProperties().Where(x => !_config.IsPropertyIgnored(x)))
            {
                var fieldConfig = _config.GetFieldConfig(prop);
                fieldConfig.ConfigureField(graphType, cache, services);
            }

            if (graphType is ObjectGraphType <TModel> objectGraphType)
            {
                foreach (var iFace in _config.Interfaces)
                {
                    objectGraphType.AddResolvedInterface((IInterfaceGraphType)cache.GetOrCreate(iFace, services));
                }
            }

            return(graphType);
        }