Fody плагин Validar не работает. Не удалось загрузить тип 'Validar.ValidationTemplateAttribute' из сборки mscorlib

Я пытаюсь использовать Валидар для проверки правильности своих занятий. Мое решение состоит из нескольких (на данный момент 5, может стать больше в будущем) проектов, в которые я хочу внедрить валидацию. Итак, я определил мой ValidationTemplate класс в одном из них и поместил ValidationTemplateAttribute в каждой сборке вот так:

using Validar;

[assembly: ValidationTemplate(typeof(IMS.General.Validation.ValidationTemplate))]

Когда я строю, я получаю ошибку, которую я не понимаю, но мешает мне идти дальше:

C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ Microsoft.WinFx.targets (268,9): ошибка MC1000: неизвестная ошибка сборки, "не удалось загрузить тип" Validar.ValidationTemplateAttribute "из сборки" mscorlib, версия =4.0.0.0, Культура = нейтральная, PublicKeyToken=b77a5c561934e089'.'

Я использую Visual Studio 2013 профессиональное обновление 4, а целевой платформой является.Net Framework 4.5

Если это имеет какое-либо значение для вопроса, моя реализация ValidationTemplate похоже:

namespace IMS.General.Validation
{
    public class ValidationTemplate : INotifyDataErrorInfo
    {
        private readonly INotifyPropertyChanged target;
        private readonly ValidationContext validationContext;
        private readonly List<ValidationResult> validationResults;

        public ValidationTemplate(INotifyPropertyChanged target)
        {
            this.target = target;
            this.validationContext = new ValidationContext(target, null, null);
            this.validationResults = new List<ValidationResult>();
            Validator.TryValidateObject(this.target, this.validationContext,
                       this.validationResults, true);
            target.PropertyChanged += Validate;
        }

        private void Validate(object sender, PropertyChangedEventArgs e)
        {
            this.validationResults.Clear();
            Validator.TryValidateObject(this.target, this.validationContext, 
                 this.validationResults, true);
            var hashSet = new HashSet<string>(
                 this.validationResults.SelectMany(x => x.MemberNames));

            foreach (var error in hashSet)
            {
                this.ErrorsChanged(this, 
                        new DataErrorsChangedEventArgs(error));
            }
        }

        public IEnumerable GetErrors(string propertyName)
        {
            return this.validationResults
                         .Where(x => x.MemberNames.Contains(propertyName))
                         .Select(x => x.ErrorMessage);
        }

        public bool HasErrors
        {
            get { return this.validationResults.Count > 0; }
        }

        public event EventHandler<DataErrorsChangedEventArgs> 
                ErrorsChanged = (s, e) => { };
    }
}

Что я делаю не так и как я могу решить эту проблему?

Редактировать: Давай, ребята! Неужели никто не может мне помочь с этим. Должен ли я сделать тестовое решение, чтобы показать проблему? Пожалуйста, порекомендуйте! Я действительно нуждаюсь в решении! Фоди, как правило, прекрасно работает и экономит мне много работы, сохраняя при этом мои занятия красивыми и чистыми!

1 ответ

Решение

После прямого контакта с программистом Validar он обнаружил, что разные версии.Net Framework по- разному относятся к импорту в модули. Он исправил проблемы в выпущенной версии 1.4.6. Это решает проблему.

Итак, мой совет: используйте Fody и Validar. Он отлично работает, имеет хорошую поддержку и сохраняет ваш код чистым, в то же время прекрасно проверяя его в приложении WPF (или в любой другой среде, использующей INotifyDataErrorInfo).

Другие вопросы по тегам