我有一种尝试创建大量用户帐户的方法。如果成功,则返回用户ID列表,否则我需要获取错误列表。实现这一目标的最佳途径是什么?
以下是我已实施的精简版本:
public class RXGAdapter {
private List<string> _errors;
public IEnumerable<int> CreateAccounts(string username, int quantity)
{
ResetErrors();
var accountIDs = new List<int>();
for (int i = 1; i <= quantity; i++)
{
int accountID = CreateAccount(username + i);
if (_errors.Count > 0)
{
return new List<int>();
}
accountIDs.Add(accountID);
}
return accountIDs;
}
public int CreateAccount(string username)
{
try {
// Make HTTP request to the server
// Parse the ID from of the response if successful
return id;
}
catch (WebException e)
{
// Parse the errors from the response if unsuccessful
_errors.AddRange(errors);
return -1;
}
}
public void ResetErrors()
{
_errors = new List<string>();
}
public bool HasErrors()
{
return _errors.Count > 0;
}
public IEnumerable<string> Errors
{
get { return _errors; }
}
}
我担心这会打破SRP。
答案 0 :(得分:1)
您可以抛出自定义异常,其中包含错误列表作为自定义异常的属性。
另一种方法是,如果允许您更改CreateAccounts函数签名,则可以在列表中返回每个帐户创建的状态,作为CreateAccounts函数的out参数。