Сериализация аннотаций данных

Я хотел бы хранить DataAnnotations внутри базы данных. Как я могу получить строковое представление DataAnnotation путем отражения (или другими способами)?

Пример

public class Product
    {
        [DisplayName("Price")]
        [Required]
        [RegularExpression(@"^\$?\d+(\.(\d{2}))?$")]
        public decimal UnitPrice { get; set; }
    }

Результатом могут быть данные XML или JSON, если они представлены в виде строки.


person W3Max    schedule 31.10.2010    source источник
comment
Можете ли вы объяснить, почему вы на самом деле хотите этого?   -  person Steven    schedule 31.10.2010
comment
Причина в том, что я создаю CMS и хочу создавать типы контента из классов DTO.   -  person W3Max    schedule 01.11.2010


Ответы (2)


это очень похоже на retrive-custom-attribute-parameter-values, я бы использовать его в качестве основы для вашего решения

person jasper    schedule 31.10.2010
comment
Проблема в том, что я не знаю конкретный тип DataAnnotation, поэтому я не могу получить доступ к свойствам, как в этом примере (путем приведения ValidationAttribute к определенному типу). - person W3Max; 01.11.2010

Лучше написать свой провайдер валидации, а потом просто хранить правила валидации в своей базе данных в более удобном виде. Разбор строк для создания экземпляров атрибутов кажется более трудоемким, чем необходимо. :)

Образец поставщика проверки: http://bradwilson.typepad.com/blog/2009/10/enterprise-library-validation-example-for-aspnet-mvc-2.html

person Brad Wilson    schedule 01.11.2010
comment
Благодарю вас! Очень приятно, что вы пытаетесь помочь мне в этом. Проблема с предоставленным вами решением заключается в том, что мне нужно, чтобы оно работало для всех типов DataAnnotations. Я использую настраиваемые атрибуты для хранения не только правил проверки. Я не могу объяснить здесь всю концепцию, но мне нужно, чтобы она делала именно то, что я продемонстрировал в примере. - person W3Max; 01.11.2010
comment
Вы также можете написать поставщика метаданных модели для непроверочных атрибутов. - person Brad Wilson; 01.11.2010