2010-01-22 4 views
2

J'essaie de valider une classe en utilisant des annotations de données mais avec une classe de métadonnées.Comment valider des annotations de données avec une classe MetaData

[MetadataType(typeof(TestMetaData))] 
public class Test 
{ 
    public string Prop { get; set; } 

    internal class TestMetaData 
    { 
     [Required] 
     public string Prop { get; set; } 
    } 
} 

[Test] 
[ExpectedException(typeof(ValidationException))] 
public void TestIt() 
{ 
    var invalidObject = new Test(); 
    var context = new ValidationContext(invalidObject, null, null); 
    context.MemberName = "Prop"; 
    Validator.ValidateProperty(invalidObject.Prop, context); 
} 

Le test échoue. Si je divise la classe de métadonnées et que je viens de décorer la propriété sur la classe elle fonctionne correctement. WTH je fais mal? Cela me met au bord de la folie. S'il vous plaît aider.

Répondre

-1

La classe de métadonnées doit être publique pour que la validation externe fonctionne. Je crois que la définition de la classe de métadonnées à l'intérieur de votre classe de modèle, comme vous l'avez fait dans votre exemple, devrait fonctionner. Je n'ai pas testé.

1

Answer

Voici un lien vers le poste qui m'a aidé à résoudre ce problème. Apparemment, vous devez d'abord enregistrer la classe matadata.

Questions connexes