Task <>에서 암시 적으로 형식을 변환 할 수 없습니다.
.NET 4.5에서 비동기 메서드 구문을 마스터하려고합니다. 나는 예제를 정확하게 이해했다고 생각했지만 비동기 메서드의 유형이 무엇이든 상관없이 (즉 Task<T>
) 변환시 항상 동일한 유형의 오류 오류가 발생합니다 T
. 다음 코드는 오류를 생성합니다.
암시 적 '형식을 변환 할 수 없습니다
System.Threading.Tasks.Task<System.Collections.Generic.List<int>>
'에서 'System.Collections.Generic.List<int>
'
public List<int> TestGetMethod()
{
return GetIdList(); // compiler error on this line
}
async Task<List<int>> GetIdList()
{
using (HttpClient proxy = new HttpClient())
{
string response = await proxy.GetStringAsync("www.test.com");
List<int> idList = JsonConvert.DeserializeObject<List<int>>();
return idList;
}
}
결과를 명시 적으로 캐스팅하면 실패합니다. 이:
public List<int> TestGetMethod()
{
return (List<int>)GetIdList(); // compiler error on this line
}
다소 예측 가능하게이 오류가 발생합니다.
'형식을 변환 할 수 없습니다
System.Threading.Tasks.Task<System.Collections.Generic.List<int>>
'에서 'System.Collections.Generic.List<int>
'
어떤 도움이라도 대단히 감사합니다.
Task<T>
반환 유형을 기본 유형으로 암시 적으로 변환 할 수없는 예제의 주요 문제입니다 T
. Task.Result 속성을 사용해야합니다. Task.Result는 비동기 코드를 차단하므로주의해서 사용해야합니다.
대신 이것을 시도하십시오.
public List<int> TestGetMethod()
{
return GetIdList().Result;
}
TestGetMethod async
도 만들어야 하고 await를 앞에 붙이면 GetIdList();
작업이에 풀 립니다 List<int>
. 따라서 도우미 함수가 Task를 반환하는 경우 함수를 호출 할 때 기다려야합니다 async
.
public Task<List<int>> TestGetMethod()
{
return GetIdList();
}
async Task<List<int>> GetIdList()
{
using (HttpClient proxy = new HttpClient())
{
string response = await proxy.GetStringAsync("www.test.com");
List<int> idList = JsonConvert.DeserializeObject<List<int>>();
return idList;
}
}
다른 옵션
public async void TestGetMethod(List<int> results)
{
results = await GetIdList(); // await will unwrap the List<int>
}
수행하려는 작업에 따라 GetIdList (). Result로 차단하거나 (일반적으로 나쁜 생각이지만 컨텍스트를 말하기는 어렵습니다) 비동기 테스트 메서드를 지원하고 테스트 메서드가 수행하도록하는 테스트 프레임 워크를 사용할 수 있습니다. var results = await GetIdList ();
참고URL : https://stackoverflow.com/questions/12886559/cannot-implicitly-convert-type-from-task
'Programing' 카테고리의 다른 글
Python : 목록에서 문자열의 하위 문자열을 확인하는 방법은 무엇입니까? (0) | 2020.12.01 |
---|---|
문자의 마지막 발생 전에 모든 것을 제거 (0) | 2020.12.01 |
iOS에서 숫자 키패드가 표시되지 않음 (0) | 2020.12.01 |
완료되면 CSS3 애니메이션 재설정을 방지하는 방법은 무엇입니까? (0) | 2020.12.01 |
Pandas DataFrame의 행 인덱스 값을 목록으로 가져 오나요? (0) | 2020.12.01 |