2010-10-31 7 views
3

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

Пример

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

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

+0

Можете ли вы объяснить, почему вы на самом деле хотите этого? – Steven

+1

Причина в том, что я создаю CMS, и я хочу создать «Типы контента» из классов DTO. – W3Max

ответ

1

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

+0

Проблема заключается в том, что я не знаю конкретного типа DataAnnotation, поэтому я не могу получить доступ к свойствам, как в этом примере (листинг ValidationAttribute для определенного типа). – W3Max

1

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

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

+0

Спасибо! Очень приятно, что вы пытаетесь помочь мне в этом. Проблема с предоставленным вами решением заключается в том, что мне нужно, чтобы он работал для всех видов DataAnnotations. Я использую пользовательские атрибуты для хранения не только правил проверки. Я не могу объяснить всю концепцию здесь, но мне нужно, чтобы она сделала именно то, что я продемонстрировал в этом примере. – W3Max

+0

Вы также можете написать модель поставщика метаданных для атрибутов неаудификации. –