Используйте RequiredAttribute, чтобы сделать свойство / класс обязательным - PullRequest
0 голосов
/ 09 ноября 2018

Мой вопрос похож на этот один.

class WorkFlowData
{
      [Required]
      public InputData Data{ get; set; }

      public String Whatever { get; set; }
}

class GenericWorkFlowData
{
      public InputData Data{ get; set; }

      public String Whatever { get; set; }
}

class InputData
{
      public int ObjectID { get; set; }

      public string Name { get; set; }
}

Я хочу добиться того, чтобы свойство ObjectID было обязательным.

Однако я хотел бы использовать RequiredAttribute на уровне класса, а не на уровне свойств. Проверка должна учитывать свойство ObjectID класса InputData.

Как вы можете видеть выше, не всегда, что ObjectID должен быть проверен или установлен как требуется, в зависимости от того, какой класс InputData вызывается, должна быть проверка или нет.

1 Ответ

0 голосов
/ 09 ноября 2018

Если вам нужна программная проверка, внедрите IValidatableObject.

 public class Blog : IValidatableObject
 {
     public int Id { get; set; }
     [Required]
     public string Title { get; set; }
     public string BloggerName { get; set; }
     public DateTime DateCreated { get; set; }
     public virtual ICollection<Post> Posts { get; set; }

     public IEnumerable<ValidationResult> Validate(ValidationContext validationContext)
     {
         if (Title == BloggerName)
         {
             yield return new ValidationResult
              ("Blog Title cannot match Blogger Name", new[] { "Title", “BloggerName” });
         }
     }
 }

Код из MSDN: https://docs.microsoft.com/en-us/ef/ef6/saving/validation

...