2015-03-20 2 views
0

Я использую блок проверки корпоративной библиотеки, чтобы добавить проверку на мои входящие объекты данных в рамках набора служб WCF.ObjectValidator в списке <MyType>

Я атрибут [ObjectValidator] добавил к своим контрактам сообщения, как показано ниже:

[MessageContract] 
public class MyRequest 
{ 
    public MyRequest() 
    { 
     Header = new MyHeader(); 
     Data = new List<MyType>(); 
    } 

    [ObjectValidator] 
    [MessageHeader] 
    public MyHeader Header { get; set; } 

    [ObjectValidator] 
    [MessageBodyMember] 
    public List<MyType> Data { get; set; } 
} 

и мой [DataContract] для тела дается как это:

[DataContract] 
public class MyType 
{ 
    [Required, DataMember(IsRequired = true)] 
    [RegularExpressionAttribute(RegexValidation.Name)] 
    public string Name { get; set; } 

    [Required, DataMember(IsRequired = true)] 
    [RegularExpressionAttribute(RegexValidation.Password)] 
    public string Password { get; set; }  
} 

Что я замечаю, что если мой MessageContract устанавливается как List<MyType>, тогда проверка не срабатывает. Если я удалю List<> и воспользуюсь прямой MyType, тогда он срабатывает.

Понятно, что код корпоративной библиотеки не опускается ниже списка и вместо этого ищет элементы проверки в самом объекте . Кто-нибудь знает, как обойти это?

ответ

0

Простой ответ на самом деле. При использовании ObjectValidator в списке вам необходимо использовать ObjectCollectionValidator.

Смежные вопросы