Frage

Ich verwende eine generierte Klasse als Modell, und ich wünsche DataAnnotation Attribute einige seiner Eigenschaften hinzuzufügen. Da es ein generierter Code ist, möchte ich nicht die Anmerkungen direkt hinzuzufügen. Gibt es eine andere Möglichkeit, sie auf eine Eigenschaft zu befestigen?

habe ich als das Modell eine Schnittstelle zu machen, und mit einer partiellen Klasse die erzeugten Klasse zu erhalten, um es zu abonnieren. Gibt es eine weniger aufwendige Lösung, unter der Annahme, dass das funktionieren würde sogar?

War es hilfreich?

Lösung

Ja, es gibt. Sie müssen Metadaten Klasse erstellen, die die gleichen Eigenschaften, die Ihr ursprüngliches Modell haben, und verbinden Sie es mit MetadataType Attribute zu Ihrem Modell:

[MetadataType(typeof(MyModelMetadata))]
public partial class OriginalMyModel
{
}

public class MyModelMetadata
{
    [Required]
    public string MyProperty;  

    // ...
}

Im Beispiel ebove OriginalModel ist Ihre richtige Modellklasse und MyModelMetadata ist eine Klasse nur für Kommentierung Eigenschaften verwendet. MyModelMetadata sollten die gleichen Eigenschaften haben, die Ihr Modell.

Andere Tipps

Sie können das MetadataType Attribut auf Ihrer Klasse verwenden:

http://msdn.microsoft.com /en-us/library/system.componentmodel.dataannotations.metadatatypeattribute.aspx

In der Praxis habe ich die Metadaten nicht synchron mit einem generierten Modell ziemlich häufig erhalten gesehen, obwohl, was zu einigen Kopfschmerzen führen kann. Sie können anstelle von Daten Anmerkungen in einen alternativen Validierungsmechanismus suchen.

Ich habe mit Fluent Validation , die sehr einfach zu erlernen und beginnen. Es gibt sogar eine Fluent Validation xVal Integration Stück in Fluent Validation 2.0 (noch in der Beta), die Sie bringen können in Ihr Projekt für die clientseitige Validierung.

Fluent Validation können Sie Ihre Validierung in einer separaten Klasse definieren. Alles, was Sie ist ein Attribut zu Ihrer generierten Klasse es zu sagen, was Validator zu verwenden, tun müssen, möchte hinzufügen, die durch partielle Klassen erreicht werden könnte.

Alternativ können Sie ansichtsspezifische Modelle erstellen, die von Ihrem Domain-Modell abgebildet werden, die Ihre Daten Anmerkungen enthalten. In diesem Fall vereinfacht das Hin-und-her-Mapping mit so etwas wie AutoMapper . Dann, wenn Ihr Domain-Modell ändert, erhalten Sie Compiler-Fehler im Vergleich zu dem Metadaten-Ansatz.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top