如何覆盖 returns 任务的函数
How to override a function that returns a task
我有以下功能:
public override Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout)
{
return base.PasswordSignInAsync(userName, password, isPersistent, shouldLockout);
}
我想修改成这样:
public override Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout)
{
var result = base.PasswordSignInAsync(userName, password, isPersistent, shouldLockout);
//If status was successful do some thing here
if(result = success)
{
//update last logged in time.
}
//Lastly return the result
return result;
}
现在我想修改函数的作用。
我想执行基本任务,然后使用它的结果在我的覆盖函数中做一些事情?
我该怎么做?
您可以通过向方法添加 async
关键字并等待基本操作来实现:
public async override Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout)
{
var result = await base.PasswordSignInAsync(userName, password, isPersistent, shouldLockout);
// Check result
return result;
}
因为提供的碱基调用 returns a Task<T>
是可等待的,您可以使用 async-await
.
等待它的异步完成
请注意,这意味着您必须 "async all the way" 并确保在整个调用堆栈中正确等待调用。
可以找到有关 async-await
的更多信息 here
我有以下功能:
public override Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout)
{
return base.PasswordSignInAsync(userName, password, isPersistent, shouldLockout);
}
我想修改成这样:
public override Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout)
{
var result = base.PasswordSignInAsync(userName, password, isPersistent, shouldLockout);
//If status was successful do some thing here
if(result = success)
{
//update last logged in time.
}
//Lastly return the result
return result;
}
现在我想修改函数的作用。
我想执行基本任务,然后使用它的结果在我的覆盖函数中做一些事情?
我该怎么做?
您可以通过向方法添加 async
关键字并等待基本操作来实现:
public async override Task<SignInStatus> PasswordSignInAsync(string userName, string password, bool isPersistent, bool shouldLockout)
{
var result = await base.PasswordSignInAsync(userName, password, isPersistent, shouldLockout);
// Check result
return result;
}
因为提供的碱基调用 returns a Task<T>
是可等待的,您可以使用 async-await
.
请注意,这意味着您必须 "async all the way" 并确保在整个调用堆栈中正确等待调用。
可以找到有关 async-await
的更多信息 here