首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >异步将Task<A>转换为Task<B>

异步将Task<A>转换为Task<B>
EN

Stack Overflow用户
提问于 2014-12-05 12:29:09
回答 2查看 271关注 0票数 1

我正在将内部身份验证服务与MembershipProvider集成起来。自定义提供者:

代码语言:javascript
复制
    public override MembershipUser CreateUser(
        string username,
        string password,
        string email,
        string passwordQuestion,
        string passwordAnswer,
        bool isApproved,
        object providerUserKey,
        out MembershipCreateStatus status)
    {

        //var res = client.Register(username, password, email);
        //status = MembershipCreateStatus.Success; // conver to Mem
        return null;

问题就在客户身上。如何将一个任务转换为另一个任务?

代码语言:javascript
复制
    public async Task<MembershipUser> Register(string username, string password, string email, bool isStaff=false)
    {
        var task = serviceFoo.Register(username, password, email, isStaff);
        // TODO Task<RegisteredUser> -> Task<MembershipUser>
        //var convertedTask = task.
        //return new Task<MembershipUser>();
    }

我想:

  • 异步地做
  • 我不希望RegisteredUser对提供者是可见的。

我将为RegUser编写用于会话的扩展方法,但我不知道如何异步转换任务。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-12-05 12:34:30

实际上,您并不想从Task<RegisteredUser>转换到Task<MembershipUser>,而是希望从RegisteredUser转换到MembershipUser,假设您有您提到的转换扩展方法,只需这样做:

代码语言:javascript
复制
public async Task<MembershipUser> Register(string username, string password, string email, bool isStaff=false)
{
        var user = await serviceFoo.Register(username, password, email, isStaff);// user is RegisteredUser
        return user.ConvertTomembershipUser();

}
票数 4
EN

Stack Overflow用户

发布于 2014-12-05 12:54:02

任务没有为组合构建的功能性。幸运的是,实现

代码语言:javascript
复制
public static async Task<TResult> flatmap<TSource, TResult>(this Task<TSource> src, Func<TSource, Task<TResult>> f) {
  return await f(await src);
}

public static async Task<TResult> map<TSource, TResult>(this Task<TSource> src, Func<TSource, TResult> f) {
  return f(await src);
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/27315916

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档