RequiredAttribute
'u System.ComponentModel.DataAnnotations
ad alanından kullanabilirsiniz. o kadar gibi boş değilse doğrulamak için bir mülk üstünde bu niteliği koyun:
using System.ComponentModel.DataAnnotations;
public class MyDto
{
[Required]
public SomeObject SomeProperty { get; set; }
}
Aynı şekilde bu ad alanından
more validation attributes kullanabilirsiniz.
Ayrıca, ValidationAttribute
'dan devraldığınızda kendi doğrulama özniteliklerinizi oluşturabilirsiniz. bir liste içindeki her nesneyi doğrulayan bir Doğrulama nitelik Örneğin, gibi bir şey:
[AttributeUsage(AttributeTargets.Parameter | AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
public class ValidateCollectionAttribute : ValidationAttribute
{
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
var collection = value as IEnumerable;
if (collection != null)
{
foreach (object element in collection)
{
//do validation
}
}
return ValidationResult.Success;
}
}
Sonraki size nesneyi doğrulamak için Validator
sınıfını kullanabilirsiniz. Ben null
ile MyDto
nesne örneği ettik beri mülkiyet var için, Validator
Required
özniteliği tarafından tetiklenen oldu bir ValidationResult
dönecektir
var instance = new MyDto { SomeProperty = null }; //note that I'm setting the property to null, while the property has the Required attribute
var context = new ValidationContext(instance);
var validationResults = new List<ValidationResult>(); //this list will contain all validation results
Validator.TryValidateObject(instance, context, validationResults, validateAllProperties: true);
var errors = validationResults.Where(r => r != ValidationResult.Success); //filter out all successful results since we are only interested in errors
if (errors.Any())
{
//do whatever you like to do
}
: Sen öylesine gibi, içine örneğini koymak bir ValidationContext oluşturmanız gerekir .
Bu tür bir kodu yürüten bir hizmet oluşturabilir veya kodunuzu arka planda sabitleyebilirsiniz. Tekneni ne olursa olsun.