private async Task <IReadOnlyCollection <T> > GetItemsAsync <T>(ItemKind kind, Dictionary <string, object> query) where T : IItem { // Unsafe workaround for no interface deserialization string path = $"item/{kind.ToString().ToCamelCase()}{query.AsQueryString()}"; IReadOnlyCollection <T> response; if (typeof(T) != typeof(IItem)) { var result = await _httpClient.GetFromJsonAsync <Response <T> >(path); response = result.Items; } else { var kindType = _kindMap[kind]; var responseType = typeof(Response <>).MakeGenericType(kindType); dynamic result = await _httpClient.GetFromJsonAsync(path, responseType); response = result.Items; } return(response); }
public async Task <IItem> GetItemAsync(string id, ItemKind kind) { var kindType = _kindMap[kind]; var response = await _httpClient.GetFromJsonAsync($"item/{kind.ToString().ToCamelCase()}/{id}", kindType); return(response as IItem); }