par*_*ent 5 .net c# iterator yield c#-4.0
假设我有以下方法.有些人来了
public IEnumerable<ValidationResult> Validate(UserLoginCommand command)
{
User user = userRepository.Get(u => u.Email == command.UserEmail);
if(user != null)
{
if(!user.Activated)
{
return new IEnumerable<ValidationResult>() {new ValidationResult("NotActived", Resources.UserNotActivated)};
}
if(user.IsPasswordIncorrent)
{
yield return new ValidationResult("IncorrectPassword", Resources.IncorrentPassword);
}
}
}
Run Code Online (Sandbox Code Playgroud)
实际情况实际上有点复杂,但为了说明目的,我留下了很多.
关键是在某些情况下,我想迭代器继续收集多个错误...但在其他情况下有一个致命的错误,我只想返回一个错误,但它不会让我:
Iterator cannot contain return statement
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
Pau*_*ips 10
如果您只想返回大小为1的集合,则可以执行以下操作:
if(!user.Activated)
{
yield return new ValidationResult("NotActived", Resources.UserNotActivated);
yield break;
}
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
1434 次 |
最近记录: |