コード例 #1
0
ファイル: Types.cs プロジェクト: joemcbride/gql-presentation
        public Task <StarWarsCharacter[]> Friends(Droid source)
        {
            var friends = source.Friends ?? new string[0];

            // Get or add a batch loader with the key "GetCharacterById"
            // The loader will call FetchCharacterByIdAsync for each batch of keys
            var loader = _accessor.Context.GetOrAddBatchLoader <string, StarWarsCharacter>("GetCharacterById", _service.FetchCharacterByIdAsync);

            // Add the list of friend ids to the pending keys to fetch
            // The task will complete once all of the FetchCharacterByIdAsync() returns with the batched results
            return(loader.LoadAsync(friends));
        }
コード例 #2
0
ファイル: Types.cs プロジェクト: joemcbride/gql-presentation
        public override object ReadJson(JsonReader reader, Type objectType, object existingValue, JsonSerializer serializer)
        {
            var obj = JObject.Load(reader);

            StarWarsCharacter character;

            if (obj.ContainsKey("homePlanet"))
            {
                character = new Human();
            }
            else
            {
                character = new Droid();
            }

            serializer.Populate(obj.CreateReader(), character);

            return(character);
        }
コード例 #3
0
 public string Description(Droid source)
 {
     return($"{source.Name} is a {source.Function} droid.");
 }
コード例 #4
0
 public string PrimaryFunction(Droid source) => source.Function;
コード例 #5
0
ファイル: Types.cs プロジェクト: joemcbride/gql-presentation
        public Task <StarWarsCharacter[]> Friends(Droid source)
        {
            var friends = source.Friends ?? new string[0];

            return(Task.WhenAll(friends.Select(id => _service.FetchCharacterByIdAsync <StarWarsCharacter>(id))));
        }