Y at-il un moyen d'instruire ASP.NET MVC au sujet des métadonnées de classe autre que de mettre directement la MetadataTypeAttribute de la classe?

StackOverflow https://stackoverflow.com/questions/3811967

Question

Voici un exemple de la façon dont il fonctionne maintenant:

[MetadataType(typeof(PersonMetadata))]
public class Person
{
    public string Name { get; set; }
    public int Age { get; set; }
}

public class PersonMetadata
{
    [Required]
    public string Name { get; set; }
    [Range(0,150]
    public int Age { get; set; }
}

Cependant, je ne veux pas le MetadataAttribute à mettre sur la classe Person, au lieu que je veux une certaine façon de dire au framework MVC « hey si vous rencontrez la classe Person est la Metadate dans la classe PersonMetadata ».

Il est juste inverser la direction qui pour moi se sent plus de composition et suivant le principe d'ouverture-fermeture puisque je ne dois pas toucher la classe personne à « étendre » avec des métadonnées.
Je sais que cela crée un problème de possibles métadatas multiples et contradictoires étant attaché, augmente également la complexité, mais la flexibilité est toujours à un prix.

Je veux soit une manière programmatique ou déclarative ou de préférence à la fois:)

Alors on pourrait être quelque chose comme:

MetadataTypeMappings.Add(typeof(Person), typeof(PersonMetadata));

Une autre pourrait être:

[MetadataFor(typeof(Person)]
public class PersonMetadata
{
    [Required]
    public string Name { get; set; }
    [Range(0,150]
    public int Age { get; set; }
}
Était-ce utile?
scroll top