为什么它在代码调用FindByEmail()时实际调用FindByEmailAsync()

时间:2017-02-16 16:40:00

标签: asp.net-identity

我正在使用我的同事留下的一个遗留.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(),为什么会这样?

1 个答案:

答案 0 :(得分:1)

正如您所说,FindByEmail是一种扩展方法。只有这是一个只需以同步方式调用FindByEmailAsync的瘦包装器 - 便于检查原始source code - 搜索" FindByEmail"在页面上。

因此,当您在代码中实际调用同步版本时,您会看到异步方法,这并不奇怪。