私のサービスの実装コードで、「タイプ 'bool'を暗黙的に 'system.threading.tasks.task bool'に変換できません」というエラーが発生しました。私のコードを訂正していただけませんか。
public Task<bool> login(string usn, string pwd)
{
DataClasses1DataContext auth = new DataClasses1DataContext();
var message = from p in auth.Users
where p.usrName == usn && p.usrPass == pwd
select p;
if (message.Count() > 0)
{
return true;
}
else
{
return false;
}
}
この操作を非同期で実行するかどうかを具体的に指定する必要があります。
Async Operation
の例:
public async Task<bool> login(string usn, string pwd)
{
DataClasses1DataContext auth = new DataClasses1DataContext();
var message = await (from p in auth.Users
where p.usrName == usn && p.usrPass == pwd
select p);
if (message.Count() > 0)
{
return true;
}
else
{
return false;
}
}
非同期操作にする必要がない場合は、次のことを試してください。
public bool login(string usn, string pwd)
{
DataClasses1DataContext auth = new DataClasses1DataContext();
var message = from p in auth.Users
where p.usrName == usn && p.usrPass == pwd
select p;
if (message.Count() > 0)
{
return true;
}
else
{
return false;
}
}
注意: async
およびawait
は.net 4.5およびC#5.0以降と互換性があります
Task.FromResult
を追加すると、メソッドがasync
でなくても、偽装してコンパイルして動作させることができます。 Identity(すべてasync
)をレガシーバックエンドに接続するときに、これを行う必要がありました。
例:
public override Task<bool> IsEmailConfirmedAsync(string userId)
{
var profile = UserProfileType.FetchUserProfile(AtlasBusinessObject.ClientId.ToString(), decimal.Parse(userId));
Task.FromResult(profile.EmailAddress.NullIfEmpty() != null);
}