/// <summary> /// Creates a copy of the current object /// </summary> /// <returns>The field clone</returns> public MergedField Clone() { var apiProvider = this.providers.First(); var field = this.OriginalFields[apiProvider.Description.ApiName]; var mergedField = new MergedField( this.FieldName, this.Type, apiProvider, field, this.Flags, this.Arguments, this.Description); mergedField.Resolver = this.Resolver; foreach (var provider in this.providers.Skip(1)) { mergedField.AddProvider(provider, this.OriginalFields[provider.Description.ApiName]); } return(mergedField); }
/// <summary> /// Initializes a new instance of the <see cref="MergedRoot"/> class. /// </summary> /// <param name="originalTypeName"> /// The original type name. /// </param> /// <param name="providers"> /// The providers. /// </param> /// <param name="root"> /// The root. /// </param> public MergedRoot(string originalTypeName, List <ApiProvider> providers, MergedApiRoot root) : base(originalTypeName) { if (providers == null || providers.Count == 0) { return; } this.searcher = root.NodeSearher; var apiField = new MergedField( "api", root, providers.First(), null, description: "The united api access"); foreach (var apiProvider in providers.Skip(1)) { apiField.AddProvider(apiProvider, null); } this.Fields["api"] = apiField; }
/// <summary> /// Initializes a new instance of the <see cref="MutationResolver"/> class. /// </summary> /// <param name="mergedField"> /// The merged field. /// </param> public MutationResolver(MergedField mergedField) { this.mergedField = mergedField; this.provider = this.mergedField.Providers.First(); }
/// <summary> /// Creates virtual field /// </summary> /// <param name="name"> /// The field name /// </param> /// <param name="type"> /// The field type /// </param> /// <param name="resolver"> /// The field resolver /// </param> /// <param name="flags"> /// The field flags. /// </param> /// <returns> /// The field /// </returns> private FieldType CreateField(string name, MergedType type, IFieldResolver resolver = null, EnFieldFlags flags = EnFieldFlags.None) { var mergedField = new MergedField(name, type, this.Provider, null, flags); return(this.ConvertApiField(new KeyValuePair <string, MergedField>(name, mergedField), resolver)); }
/// <summary> /// Initializes the internal state /// </summary> public void Initialize() { this.KeyField = this.Fields.Values.FirstOrDefault(f => f.Flags.HasFlag(EnFieldFlags.IsKey)); }