Либо или должно иметь значение, но оба не могут быть нулевыми одновременно - PullRequest
0 голосов
/ 25 марта 2010

У меня есть два поля, и мне нужно сгенерировать атрибут, используя проверку Microsoft Enterprise Library, чтобы либо иметь, либо иметь значение, но оба не могут быть равны нулю одновременно.

Ответы [ 2 ]

1 голос
/ 25 марта 2010

Используйте пользовательский валидатор.

[HasSelfValidation]
public class ValidateMe {


    [SelfValidation]
    public void ValidateFieldNotNul(ValidationResults validationResults)
    {
       .. start psudo code
         if( xor)
             validationResults.AddResult( new ValidationResult("One must not be null",...));
    }

}
0 голосов
/ 25 марта 2010

Блок приложения проверки имеет PropertyComparisonValidator, что позволяет сравнивать одно свойство с другим. К сожалению, этот валидатор допускает только ComparisonType из: Equal, NotEqual, GreaterThan, GreaterThanEqual, LessThan, LessThanEqual, так что на самом деле это вам не поможет.

Я думаю, у вас есть 2 варианта:

  • Самостоятельная проверка
  • Пользовательский валидатор

Самостоятельная проверка (показанная @Nix), вероятно, является самой простой, но для каждого сценария, где у вас есть это требование, потребуется повторная реализация этого (по крайней мере, чтобы перехватить вызов общего метода).

Создание пользовательского валидатора приведет к коду, который можно добавить в конфигурацию или присвоить непосредственно объектам и который можно будет легко использовать повторно.

Пользовательский валидатор определенно будет более трудоемким, но может стоить того, если вам потребуется повторное использование (например, его можно повторно использовать в разных приложениях) или предпочтение такого дизайна.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...