У меня есть метод контроллера, обеспечивающий словарь (Web Api 2.1, Framework 4.8)
[HttpGet]
[Route("dictionary")]
public Generic.Dictionary<int, string> GetTestDictionary()
{
return new Generic.Dictionary<int, string>() { { 21, "twenty one" }, { 42, "forty two" } };
}
Ответ в браузере (firefox):
{" 21 ":" двадцать один "," 42 ":" сорок два "}
Для получения данных я использую (ASP. NET Core 3.1 + HttpClientJsonExtensions)
public class ApiFacade {
private HttpClient client;
public ApiFacade(HttpClient client) {
this.client = client;
}
public Task<Dictionary<TKey, string>> GetDictionaryAsync<TKey>() {
return client.GetJsonAsync<Dictionary<TKey, string>>($"api/dictionary");
}
}
Я могу прочитать словарь как <string, string>
var a = await _apiFacade.GetDictionaryAsync<string>();
Но попытка прочитать его как <int, string>
var b = await _apiFacade.GetDictionaryAsync<int>();
не удалась с System.NotSupportedException
Тип коллекции 'System.Collections.Generi c .Dictionary`2 [System.Int32, System.String]' не поддерживается.
Я использую LINQ для преобразования от Dictionary<string,string>
до <int,string>
.
Есть ли способ как перевести Dictionary<int,string>
без воссоздания с <string,string>
?