Если я знаю точно, в каком количестве элементов я собираюсь нуждаться, сказать, что мне нужны 5 элементов и [только 111] когда-либо 5 элементов тогда, я использую массив. Иначе я просто использую List< T>.
Что вам нужно сделать, так это создать ' класс друзей ' и применить к этому классу аннотации данных:
[MetadataType(typeof(UserValidation))]
public partial class User
{
...
}
public class UserValidation
{
[DataType(DataType.EmailAddress, ErrorMessage = "Please enter an email address")]
public string Email { get; set; }
}
Это не даст прямого ответа на ваш вопрос, но у меня была та же проблема, и вместо использования DataAnnotations я до сих пор с большим успехом использую фреймворк FluentValidation {0}. Он отлично работает, поскольку предоставляет большую часть тех же функций, но не применяет проверку с использованием атрибутов для членов класса. Проверка происходит в совершенно отдельном классе, который действует на проверяемый класс (например, UserValidator).