2017-02-16 20 views
0

私は私の同僚が残した1つのレガシー.NET MVCプロジェクトで働いていて、彼は、ユーザ認証に対処するには、Microsoft IDシステムを使用しています。 LoginControllerで:コードがFindByEmailを呼び出したときに、それは実際に()FindByEmailAsyncを呼び出し、なぜ()

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

後、私はFindByEmail()は実際にUserManagerExtensionクラスにマイクロソフトによって書かれたプリコンパイルされた関数であることに気づきました。しかし、私の同僚はまた彼のカスタマイズされたUserManagerクラスでFindByEmailAsync()と呼ばれる別の同様の機能を定義しています

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

を、私はプロジェクトをデバッグするとき、それは「VaRのユーザーを実行したとき、私は何とかFindByEmailAsync()と呼ばれるLoginControllerのコードを見つけました= userManager.FindByEmail(modelUserName) "、なぜですか?

+0

あなたは 'FindByEmailAsync'の定義についてよろしいですか? 'override'キーワードはありませんか? – trailmax

答えて

1

あなたが言ったように、FindByEmailは、拡張メソッドです。ページの「FindByEmail」の検索 - オリジナルsource codeを検査するのは簡単 - これだけはちょうど同期的にFindByEmailAsyncを呼び出し薄いラッパーです。

ですから、あなたが実際にあなたのコード内で同期バージョンを呼び出すときに呼び出さ非同期メソッドを参照してください何の驚きはありません。

関連する問題