Bei der Verwendung von Datenanmerkungen mit MVC müssen die Vor- und Nachteile der Verwendung einer Schnittstelle gegenüber einem Metadatentyp beachtet werden

Wenn du liestDieser Artikel zur Validierung mit den Data Annotation Validatorszeigt, dass Sie das MetadataType-Attribut verwenden können, um Validierungsattribute zu Eigenschaften von Teilklassen hinzuzufügen. Sie verwenden dies, wenn Sie mit ORMs wie LINQ to SQL, Entity Framework oder Subsonic arbeiten. Dann können Sie die "automagische" clientseitige und serverseitige Validierung verwenden. Es spielt sich sehr gut mit MVC.

Ein Kollege von mir verwendete jedoch eine Schnittstelle, um genau das gleiche Ergebnis zu erzielen. es sieht fast genauso aus und leistet funktional dasselbe. Also anstatt dies zu tun:

[MetadataType(typeof(MovieMetaData))]
public partial class Movie
{
}

public class MovieMetaData
{
    [Required]
    public object Title { get; set; }

    [Required]
    [StringLength(5)]
    public object Director { get; set; }


    [DisplayName("Date Released")]
    [Required]
    public object DateReleased { get; set; }
}

Er tat dies:

public partial class Movie :IMovie
{
}

public interface IMovie
{
    [Required]
    object Title { get; set; }

    [Required]
    [StringLength(5)]
    object Director { get; set; }


    [DisplayName("Date Released")]
    [Required]
    object DateReleased { get; set; }
}

Meine Frage ist also, wann dieser Unterschied tatsächlich eine Rolle spielt.

Ich bin der Meinung, dass Interfaces in der Regel "wiederverwendbarer" sind und dass es wenig Sinn macht, eine für eine einzelne Klasse zu erstellen. Sie könnten auch argumentieren, dass Sie Ihre Klassen und Interfaces so entwerfen könnten, dass Sie Interfaces für mehrere Objekte verwenden können, aber ich denke, das ist der Versuch, Ihre Modelle in etwas anderes zu integrieren, wenn sie wirklich für sich alleine stehen sollten. Was denkst du?

Antworten auf die Frage(3)

Ihre Antwort auf die Frage