2010-10-31 15 views
3

Je souhaite stocker des DataAnnotations dans une base de données. Comment puis-je récupérer une représentation sous forme de chaîne d'une DataAnnotation par réflexion (ou par d'autres moyens)?Serializing DataAnnotations

Exemple

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

Résultat pourrait être données XML ou JSON tant qu'il est de chaîne de caractères.

+0

Pouvez-vous expliquer pourquoi vous voulez vraiment cela? – Steven

+1

La raison en est que je construis un CMS et que je veux construire des "Types de contenu" à partir des classes DTO. – W3Max

Répondre

1

ce qui est très similaire à retrieve-custom-attribute-parameter-values, je l'utiliser comme base pour votre solution

+0

Le problème est que je ne connais pas le type spécifique de DataAnnotation, donc je ne peux pas accéder aux propriétés comme dans cet exemple (en convertissant ValidationAttribute en un type spécifique). – W3Max

1

Vous feriez mieux d'écrire votre propre fournisseur de validation, puis simplement stocker les règles de validation dans votre base de données dans un forme plus pratique. Analyser les chaînes pour essayer d'instancier les attributs semble plus de travail que nécessaire. :)

fournisseur de validation de l'échantillon: http://bradwilson.typepad.com/blog/2009/10/enterprise-library-validation-example-for-aspnet-mvc-2.html

+0

Merci! Très heureux que vous essayez de m'aider avec ça. Le problème avec la solution que vous avez fournie est que j'en ai besoin pour travailler sur toutes sortes de DataAnnotations. J'utilise des attributs personnalisés pour stocker plus que de simples règles de validation. Je ne peux pas expliquer tout le concept ici mais j'en ai besoin pour faire exactement ce que j'ai démontré dans l'exemple. – W3Max

+0

Vous pouvez également écrire un fournisseur de métadonnées de modèle pour les attributs de non-validation. –