通过包装返回
的方法,我可能遇到任何问题Task<T> where T : ClassA
使用返回
的方法Task<T> where T : IClassA
换句话说,使用另一个方法包装一个返回某种类型的Task的方法,该方法返回该类型接口的Task,如下所示:
public new Task<ITspIdentity> FindByIdAsync(string id)
{
return new Task<ITspIdentity>(() => base.FindByIdAsync(id).Result);
}
其中base.FindByIdAsync(id)将返回
Task<TspIdentity>.
我正在尝试通过使用接口将ASP.NET MVC应用程序表示层与ASP.Identity的依赖关系解耦。
答案 0 :(得分:5)
只要调用代码不依赖于仅通过ClassA
而无法通过IClassA
提供的成员,就不应该存在问题。
您正在创建并返回Cold Task
,它将同步运行异步方法,这会浪费资源。您可以重构该代码并执行:
public new async Task<ITspIdentity> FindByIdAsync(string id)
{
var tspIdentity = await base.FindByIdAsync(id).ConfigureAwait(false);
return (ITspIdentity) tspIdentity;
}