2017-02-16 128 views
0

我正在处理同事遗留的一个遗留.NET MVC项目,他使用Microsoft Identity System来处理用户身份验证。在的LoginController:为什么在代码调用FindByEmail()时实际调用FindByEmailAsync()

var user = userManager.FindByEmail(modelUserName); 
if(user == null) 
{ 
    // the user was not found.. 
} 
else 
{} 

后来我意识到,FindByEmail()实际上是微软在UserManagerExtension类编写的预编译功能。然而,我的同事也定义了一种叫FindByEmailAsync()类似的功能在其定制的UserManager类:

public Task<User> FindByEmailAsync(string email) 
{ 
    return .. 
} 

,当我调试项目,我发现在LoginController中的代码以某种方式被称为FindByEmailAsync(),当它运行“变种用户= userManager.FindByEmail(modelUserName)“,为什么呢?

+0

你确定'FindByEmailAsync'的定义吗?它没有'override'关键字吗? – trailmax

回答

1

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

因此,当您在代码中实际调用同步版本时,您看到称为异步方法并不令人惊讶。

相关问题