Это снова проблема EntLib-Validator.Я играю с EntLib 5.0 в C # и .Net 4.0 в XP pro.
У меня есть некоторые бизнес-объекты (частичные классы), созданные с помощью шаблонов T4.Поэтому я решил поместить их атрибуты проверки в классы друзей, используя MetadataTypeAttribute
, как определенно рекомендовано документацией entLib 5.0 ( msdn ).Но объект Validator
, полученный от ValidatorFactory, не знает об атрибутах проверки, определенных в классе метаданных.
Бизнес-объект определен так:
[MetadataType(typeof(PatientMetadata))]
public partial class Patient
{
private string _Name;
private int _DiagnosisCount;
public int DiagnosisCount
{
get
{
return _DiagnosisCount;
}
set
{
if (value != _DiagnosisCount)
{
_DiagnosisCount = value;
}
}
}
public string Name
{
get
{
return _Name;
}
set
{
if (value != _Name)
{
_Name = value;
}
}
}
}
И класс метаданных, подобный этому, согласно документации:
public class PatientMetadata
{
[RangeValidator(4)]
public int DiagnosisCount { get; set; }
[StringLengthValidator(64, ErrorMessage = "Name must not exceed 64 chars.")]
public string Name { get; set; }
}
Если я знаю, попробуйте выполнить проверку следующим образом:
var factory = ValidationFactory.DefaultCompositeValidatorFactory;
var validator = factory.CreateValidator<Patient>();
... затем посмотрите на validator
(во времяуже говорит, что это просто AndCompositeValidator
без каких-либо дочерних валидаторов.Опять же, если я добавлю атрибуты валидации прямо в класс Patient
, он будет отлично работать.
К настоящему времени я не имею ни малейшего представления о том, чего мне здесь не хватает, поскольку я думаю, что делаю все в соответствии сдокументы.
Заранее спасибо, ребята!