У меня проблема с отражением, DataAnnotations и asp.mvc.
Я определил интерфейс, например:
public interface IFoo
{
string Name { get; set; }
}
Затем я создаю классы, которые реализуют этот интерфейс И добавляет некоторыебольше свойств:
public class a : IFoo
{
public string Name { get; set; }
[MaxLength(50)]
public string P1 { get; set; }
}
public class b: IFoo
{
public string Name { get; set; }
[Required]
[MaxLength(100)]
public string P2 { get; set; }
}
// Дополнительный класс, который должен хранить извлеченные свойства из класса a или b.
public class AdditionalProperty
{
public string Name { get; set }
public string Value { get; set }
}
Как вы можете видеть, есть некоторые дополнительныесвойства с атрибутами DataAnnotations.
Итак, вопрос в том, как создать коллекцию дополнительных свойств с метаданными DataAnnotations?.
Ожидается следующий результат:
Для класса a => ICollection = {{Name = "P1", Value = null}} // НО свойство Value должно иметь аннотации Data из свойства P1.
Для класса b => ICollection = {{Name= "P2", Value = null}} // НО свойство Value должно иметь DataAnnotations из свойства P2.
Требуется создать модель в asp.mvc с проверкой, например:
public class aspMvcModel
{
public ICollection<AdditionalProperty> ListOfProperties { get; set; }
}
Тогда я могу использовать этоКласс модели для отображения формы в представлении asp.mvc.
-
Я знаю, как извлечь список свойств, и я знаю, как выбирать только уникальные свойства для каждого класса (упрощенный код):
var classToScan = new a();
var properties = classToScan.GetType().GetProperties()
Но я не знаю, как "скопировать" аннотации данных из одного класса в коллекцию класса AdditionalProperty.
Есть идеи?.