FluentObjectValidator هي مكتبة التحقق من صحة صغيرة وبسيطة توفر واجهة بطلاقة لتكوين القاعدة.
تهدف المكتبة إلى توفير بديل للتحقق من صحة السمة من النموذج (المطلوبة ، stringlengthattribute ، إلخ).
أهداف المكتبة .NET Standart 1.0 ، .NET 4.0 ، .NET 4.5
المكتبة متوفرة كحزمة nuget.
فيما يلي الخطوات التي ستساعدك على تكوين التحقق من الصحة في تطبيقك.
أول الأشياء أولاً ، ستحتاج إلى تحديد المعلومات التي ترغب في تلقيها ، عندما لم يمر نموذج معين بالتحقق.
الفئات الرئيسية التي توفر وظيفة التحقق من الصحة هي:
Validator - إرجاع قيمة منطقية تشير إلى أن التحقق من الصحة مرت أم لا.Validator<TError> - يعيد مثيلًا لكائن ValidationResult<TError> ، الذي يحتوي على قيمة منطقية ، ومجموعة من الأشياء TError المخصصة التي ستظهر لك بالضبط ، أي من القواعد لم تمر.بعد أن تقرر المدقق الذي يجب استخدامه ، كل ما عليك فعله هو أن ترث منه ، وإضافة التكوينات ، مثل ذلك:
public class MyValidator : Validator
{
public MyValidator ( )
{
AddConfiguration ( new ProductDTOConfiguration ( ) ) ;
AddConfiguration ( new UserDTOConfiguration ( ) ) ;
}
} public class MyValidator : Validator < MyCustomError >
{
public MyValidator ( )
{
AddConfiguration ( new ProductDTOConfiguration ( ) ) ;
AddConfiguration ( new UserDTOConfiguration ( ) ) ;
}
}هذا يقودنا إلى الخطوة التالية.
لتكوين القواعد التي يجب أن تتبعها الكائنات الخاصة بك ، تحتاج إلى إنشاء فئات التكوين لكل نوع من الأنواع التي تريد التحقق منها.
اعتمادًا على المدقق المختار ، ترث جميع التكوينات من ValidationConfiguration<TObject> أو ValidationConfiguration<TObject, TError> .
ValidationConfiguration<TObject> public class ProductDTOConfiguration : ValidationConfiguration < ProductDTO >
{
public ProductDTOConfiguration ( )
{
Property ( x => x . Title )
. IsRequired ( )
. HasRule ( x => x . Length <= 10 ) ;
}
}بعد اختيار الخاصية ، يمكنك إضافة قواعد التحقق من الصحة بطريقة بطلاقة.
يمكنك تحديد أي قواعد ذات طريقة HasRule ، ولكن هناك العديد من الاختصارات المحددة مسبقًا مثل IsRequired المتاحة لجميع الكائنات ، و HasMinLength ، HasMaxLength ، HasLengthInRange ، MatchesRegex متاح فقط للسلاسل.
يحدث التحقق من الصحة بالتتابع في ترتيب تم تحديد القواعد ، ويعيد false فور لم يمر إحدى القواعد ، أو true إذا مرت جميعها.
ValidationConfiguration<TObject, TError> public class ProductDTOConfiguration : ValidationConfiguration < ProductDTO , MyCustomError >
{
public ProductDTOConfiguration ( )
{
Property ( x => x . Title )
. IsRequired ( ( ) => new MyCustomError ( "Title is required" ) )
. HasRule (
x => x . Length <= 10 ,
( ) => new MyCustomError ( "Title is too long" ) ) ;
}
}يعد تكوين التحقق من الصحة ، والذي يعيد الأخطاء المخصصة في حالة الفشل أكثر تعقيدًا قليلاً.
بعد اختيار خاصية وتحديد قاعدة ، تحتاج الآن إلى إضافة مندوب سيتم استخدامه لإنشاء كائن الخطأ إذا لم تمر القاعدة.
يحدث التحقق من الصحة أيضًا بالتتابع بترتيب تم تحديد القواعد ، ولكن إذا لم يتم تمرير إحدى القواعد ، يتم إضافة الخطأ إلى النتيجة ، ويستمر التحقق من الصحة.
يمكنك تكوين التحقق من الصحة لتخطي بقية القواعد الخاصة بالخاصية الحالية ، أو للكائن بأكمله ، في حالة عدم مرور قاعدة محددة. يمكن القيام به عن طريق تمرير المعلمات المنطقية الاختيارية المقابلة stopValidationOnError وإنهاء terminateValidationOnError إلى طريقة HasRule . كلاهما كاذب بشكل افتراضي.
تتخطى طريقة IsRequired دائمًا بقية القواعد الخاصة بخصوصية ما ، حيث لا نحتاج إلى التحقق من القواعد الأخرى إذا كانت العقار على سبيل المثال مساوياً لخالية.
يتم تنفيذ قواعد الاختصار مثل IsRequired ، HasMaxLength عبر طرق التمديد ، بحيث يمكنك بسهولة إضافة اختصاراتك إلى مشروعك.
بعد تكوين القواعد ، يمكنك الآن إنشاء مثيل المدقق واستخدامه أينما تريد.
var res = validator . Validate ( obj ) ;يعرض كل مصادق طريقة "التحقق من صحة" عامة واحدة ، والتي تتوفر عبر واجهات:
public interface IValidator < TError >
{
ValidationResult < TError > Validate < TObject > ( TObject target ) ;
}
public interface IValidator
{
bool Validate < TObject > ( TObject target ) ;
}لهذا السبب يمكنك بسهولة استخدامه مع حقن التبعية:
services . AddSingleton < IValidator , MyValidator > ( ) container . Register < IValidator < MyCustomError > , MyValidator > ( Lifestyle . Singleton ) ;يتم تحميل جميع التكوينات والتحقق من صحتها أثناء إنشاء مثيل المدقق ، لذلك من الأفضل استخدامه كفرد.
هذا المشروع مرخص بموجب ترخيص معهد ماساتشوستس للتكنولوجيا - راجع ملف الترخيص للحصول على التفاصيل
الطريقة التي تحدث بها تكوين القاعدة مستوحاة من إطار الكيان 6 ، وطريقة تكوين العلاقات بين الكيانات.