C# --fluentvalidation | system.invalidcastexception
Привет, ребята, у меня есть проблема с FluentValidation. Я принимаю эту ошибку, когда запускаю приложение:
System.InvalidCastException: 'Unable to cast object of type 'DevFramework.Northwind.Entities.Concrete.Product' to type 'FluentValidation.IValidationContext'.'
Сломанной Код Проверки Свободно :
using FluentValidation; namespace DevFramework.Core.CrossCuttingConcerns.Validation.FluentValidation { public class ValidatorTool { public static void FluentValidate(IValidator validator, object entity) { var result = validator.Validate((IValidationContext)entity); if (result.Errors.Count > 0) { throw new ValidationException(result.Errors); } } } }
-----------------------------------------------------------------------
FluentValidationAspect(я использую postsharp), который я использовал для:
[FluentValidationAspect(typeof(ProductValidator))] [CacheRemoveAspect(typeof(MemoryCacheManager))] [LogAspect(typeof(FileLogger))] public Product Add(Product product) { return _productDal.Add(product); }
Спасибо!
Что я уже пробовал:
Я уже пробовал этот код:
public class ValidatorTool { public static void FluentValidate(IValidator validator, object entity) { var result = validator.Validate(entity); if (result.Errors.Count > 0) { throw new ValidationException(result.Errors); } } }
и я принял эту ошибку:
cannot convert from 'object' to 'FluentValidation.IValidationContext' DevFramework.Core 17 Active
Member 14637786
Можете ли вы показать класс ProductValidator?
||Memo||
публичный класс ProductValidator:AbstractValidator<product>
{
общественные ProductValidator()
{
Взяли ее за правило для(Р =&ГТ; п.Кодтипа).NotEmpty().WithMessage("идентификатор категории не может быть пустым");
Взяли ее за правило для(Р =&ГТ; п."Марка").NotEmpty().WithMessage("название продукта не может быть пустым");
Взяли ее за правило для(Р =&ГТ; п."Цена").GreaterThan(0).WithMessage("цена единицы измерения не может быть пустой и должна быть больше 0");
Взяли ее за правило для(Р =&ГТ; п.QuantityPerUnit).NotEmpty().WithMessage("идентификатор категории не может быть пустым");
Взяли ее за правило для(Р =&ГТ; п."Марка").Длина(2, 20).WithMessage("длина названия продукта должна быть между 2 и 20");
Взяли ее за правило для(Р =&ГТ; п."Цена").GreaterThan(20).When(p => p.CategoryID == 1).WithMessage("цены не могут быть ниже 20 для члена этой категории");
}
BillWoodruff
Вы, похоже, используете фреймворк, который больше не поддерживается; их веб-сайт не имеет контента.
||Memo||
Я использую EntityFramework. Приложение работает, но FluentValidation работает неправильно. Я могу вернуть get all метод.
BillWoodruff
Ваш код показывает ошибку в DevFrameWork.
||Memo||
Извините, я дал это имя своей программе :D не фреймворк, а просто название.