无法将类型’System.Collections.Generic.List ‘隐式转换为’System.Threading.Tasks.Task >

我得到一个例外。

无法将类型'System.Collections.Generic.List'隐式转换为'System.Threading.Tasks.Task<System.Collections.Generic.IEnumerable>'

以下是我的财产和方法。

  private List WebFormFields { get; set; } = new List(); Task<IEnumerable> IRegistrationRepository.GetWebFormFields() { return WebFormFields; } 

当您在方法声明中缺少async时,通常会发生此错误。

当您在签名中放入async时,C#编译器会添加“魔法”来执行从对象到返回该对象的Task的转换。

但是,在您的情况下, async是不必要的,因为您返回的任务的结果是您已经拥有的:

 return Task.FromResult>( WebFormFields ); 

你的方法返回类型是

 Task> 

但实现返回一个

 List. 

您可以将其更改为

 Task> IRegistrationRepository.GetWebFormFields() { return Task.FromResult(WebFormFields); } 

或者将私有变量更改为

 IEnumerable WebFormFields { get; set; } = new List(); 

类型。

或者,您可以添加异步关键字以使其成为同步调用

 async Task> IRegistrationRepository.GetWebFormFields() { return WebFormFields; }