Я использую блок проверки корпоративной библиотеки, чтобы добавить проверку на мои входящие объекты данных в рамках набора служб 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
, тогда он срабатывает.
Понятно, что код корпоративной библиотеки не опускается ниже списка и вместо этого ищет элементы проверки в самом объекте . Кто-нибудь знает, как обойти это?