Валидировать объект, например, перед сохранением в базу данных, можно разными способами. Есть способ "Простой", обычно все им и пользуются. Хочу показать "Продвинутый" способ. И не только показать сам способ, но и его реализацию. И даже презентовать новый nuget-пакет.
Посмотреь видео вы можете на канале youtube. На видео показан процесс создания IRulesValidator, а также пример использования уже готового nuget-пакета Calabonga.RulesVlidator
This is a sample for demo purposes. Please, see in repository on github.com
![2](https://private-user-images.githubusercontent.com/346209/404658843-e036fbbf-00a6-470d-8542-de888de49c53.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg3NzgzMTUsIm5iZiI6MTczODc3ODAxNSwicGF0aCI6Ii8zNDYyMDkvNDA0NjU4ODQzLWUwMzZmYmJmLTAwYTYtNDcwZC04NTQyLWRlODg4ZGU0OWM1My5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwNVQxNzUzMzVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT1hYjRjYjM4NzRkNDQ4NThkMTM3NjI2NDAzYTA0ZDU2NGExNmE5NjViOTdlMzQ2MTNmNzkwMmQ3YTRiNDA2OGQ3JlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.mPS6lbS-xY_6UMnnY3iMgHHGwuKVa71usuvCHr4tywM)
var validator = container.GetRequiredService<PersonValidator>();
![3](https://private-user-images.githubusercontent.com/346209/404658993-be3dc17d-ba34-4842-8bc2-edcce4e94984.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg3NzgzMTUsIm5iZiI6MTczODc3ODAxNSwicGF0aCI6Ii8zNDYyMDkvNDA0NjU4OTkzLWJlM2RjMTdkLWJhMzQtNDg0Mi04YmMyLWVkY2NlNGU5NDk4NC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwNVQxNzUzMzVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT02YTEzMTU2ZDE3ZjUyZjYxM2Y3MjRjZjFkY2RjMGJjMTkwYTEwNWI3NzU4MWUzODcwOTgxYTgxMTU1ZjY4ZTNhJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.4qIjc4GPZZry9XEoyjWca6P3MZZaqAuXHxU4LLO0sAM)
![1](https://private-user-images.githubusercontent.com/346209/404659006-c7870fec-0990-4d78-a0ff-049359e05d58.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg3NzgzMTUsIm5iZiI6MTczODc3ODAxNSwicGF0aCI6Ii8zNDYyMDkvNDA0NjU5MDA2LWM3ODcwZmVjLTA5OTAtNGQ3OC1hMGZmLTA0OTM1OWUwNWQ1OC5wbmc_WC1BbXotQWxnb3JpdGhtPUFXUzQtSE1BQy1TSEEyNTYmWC1BbXotQ3JlZGVudGlhbD1BS0lBVkNPRFlMU0E1M1BRSzRaQSUyRjIwMjUwMjA1JTJGdXMtZWFzdC0xJTJGczMlMkZhd3M0X3JlcXVlc3QmWC1BbXotRGF0ZT0yMDI1MDIwNVQxNzUzMzVaJlgtQW16LUV4cGlyZXM9MzAwJlgtQW16LVNpZ25hdHVyZT04MDM1MDA3OGI0ZTZlNGIzMDYyOGY4MjZjYjVmMDFhNjU4N2E4Yzk2YjJlYjA4YjUxYWM5NTZhYWQ4YjFjMTZlJlgtQW16LVNpZ25lZEhlYWRlcnM9aG9zdCJ9.E3gDnsxOIAUHtFpjw24M3qS27jJa0NrT_Lz_g0iPfng)