public override Task<IdentityResult> ValidateAsync(AppUser item)
{
if(item.Email != "a@a.com")
{
IEnumerable<string> errors = new List<string>() { "error1" };
}
}
IdentityResultjust在其构造函数中需要一个简单的数组或不可相关的字符串。
什么是正确的语法?
答案 0 :(得分:1)
如果您绝对需要ValidateAsync()而不是Validate(),请使用TaskCompletionSource进行模拟。
public override Task<IdentityResult> ValidateAsync(AppUser item)
{
var result = new IdentityResult();
var tcs = new TaskCompletionSource<IdentityResult>();
if(item.Email != "a@a.com")
{
IEnumerable<string> errors = new List<string>() { "error1" };
result.Add(errors)
}
tcs.SetResult(result);
return tcs.Task;
}
Using Task.Run creates unnecessary overhead
编辑:我不确定TaskCompletionSource是否比Task.Run更好。我很乐意听到答案。
答案 1 :(得分:-2)
您可以使用Task.Run()
开始并获得对新Task
的引用:
public IdentityResult Validate( AppUser item )
{
IdentityResult result;
// do stuff
return result;
}
public override Task<IdentityResult> ValidateAsync( AppUser item )
{
return Task.Run( () => Validate(item) );
}