gpt4 book ai didi

c# - 包装任务返回方法的任何问题

转载 作者:行者123 更新时间:2023-11-30 14:56:02 24 4
gpt4 key购买 nike

包装返回

的方法时,我可能会遇到什么问题吗?
Task<T> where T : ClassA

用一个方法返回一个

Task<T> where T : IClassA

换句话说,用另一个返回该类型接口(interface)任务的方法包装一个返回某种类型任务的方法,如下所示:

public new Task<ITspIdentity> FindByIdAsync(string id)
{
return new Task<ITspIdentity>(() => base.FindByIdAsync(id).Result);
}

base.FindByIdAsync(id) 返回的地方

Task<TspIdentity>.

我正在尝试通过使用接口(interface)将 ASP.NET MVC 应用程序表示层从对 ASP.Identity 的依赖中分离出来。

最佳答案

只要调用代码不依赖于只能通过 ClassA 可用而不能通过 IClassA 可用的成员,就不会有问题。

您正在创建并返回一个 Cold Task,它将同步运行一个异步方法,这是一种资源浪费。您可以重构该代码并简单地执行以下操作:

public new async Task<ITspIdentity> FindByIdAsync(string id)
{
var tspIdentity = await base.FindByIdAsync(id).ConfigureAwait(false);
return (ITspIdentity) tspIdentity;
}

关于c# - 包装任务返回方法的任何问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24037142/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com