我正在使用我的同事留下的一个遗留.NET MVC项目,他使用Microsoft Identity System来处理用户身份验证。在LoginController中:
$check = array(
'var1',
'var2',
'var3',
'var4',
'var5',
'var6',
'var7',
);
$empty = false;
foreach($check as $value){
if(empty(${$value})){
$empty = true;
break;
}
}
if($empty){
// there is an empty value
}
后来我意识到FindByEmail()实际上是Microsoft在UserManagerExtension类中编写的预编译函数。但是,我的同事还在他自定义的UserManager类中定义了另一个名为FindByEmailAsync()的类似函数:
var user = userManager.FindByEmail(modelUserName);
if(user == null)
{
// the user was not found..
}
else
{}
当我调试项目时,我发现LoginController中的代码在运行“var user = userManager.FindByEmail(modelUserName)”时会以某种方式调用FindByEmailAsync(),为什么会这样?
答案 0 :(得分:1)
正如您所说,FindByEmail
是一种扩展方法。只有这是一个只需以同步方式调用FindByEmailAsync
的瘦包装器 - 便于检查原始source code - 搜索" FindByEmail"在页面上。
因此,当您在代码中实际调用同步版本时,您会看到异步方法,这并不奇怪。