如何将IDictionary中的计数行与合并行组合?

时间:2011-12-13 14:45:18

标签: c#

我有以下检查错误的类:

   public bool ValidateAccountDeletion(Account account)
    {
        var _errors = new Dictionary<string, string>();
        var accounts = _accountRepository.GetPk(account.PartitionKey);
        if (_productRepository.GetPk("0000" + account.RowKey).Count() != 0)
            _errors.Add("", "Account contains products");
        return _errors;
    }

和以下扩展类合并我的IDictionary和ModelStateDictionary

public static class ModelExtensions {
    public static bool HasValue(this string value) {
        return !string.IsNullOrEmpty(value) && value.Trim().Length > 0;
    }

    public static void Merge(this ModelStateDictionary modelState, IDictionary<string, string> dictionary) {
        Guard.AgainstNullParameter(modelState, "modelState");
        Guard.AgainstNullParameter(dictionary, "dictionary");

        foreach(var item in dictionary) {
            modelState.AddModelError(item.Key, item.Value);
        }
    }

当我调用validate然后尝试合并时,它看起来并不干净:

        var errors = _accountService.ValidateAccount(vm.Account);
        if (errors.Count > 0) 
            this.ModelState.Merge(errors)

有没有什么方法可以让我有一个不同的构造函数来合并,然后只输入输出 的:

 _accountService.ValidateAccount(vm.Account);

我正在考虑如何做到这一点,但想不出一个简单的方法

1 个答案:

答案 0 :(得分:4)

由于您的Merge方法在没有错误的情况下基本上什么都不做,您可以这样做

ModelState.Merge(_accountService.ValidateAccount(vm.Account));

不需要检查错误计数。