我正在将内部身份验证服务与MembershipProvider集成起来。自定义提供者:
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;问题就在客户身上。如何将一个任务转换为另一个任务?
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>();
}我想:
我将为RegUser编写用于会话的扩展方法,但我不知道如何异步转换任务。
发布于 2014-12-05 12:34:30
实际上,您并不想从Task<RegisteredUser>转换到Task<MembershipUser>,而是希望从RegisteredUser转换到MembershipUser,假设您有您提到的转换扩展方法,只需这样做:
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();
}发布于 2014-12-05 12:54:02
任务没有为组合构建的功能性。幸运的是,实现
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);
}https://stackoverflow.com/questions/27315916
复制相似问题