Se si legge this article on Validation with the Data Annotation Validators, viene mostrato che è possibile utilizzare l'attributo MetadataType per aggiungere attributi di convalida alle proprietà su classi parziali. Si utilizza questo quando si lavora con ORM come LINQ a SQL, Entity Framework o Subsonic. Quindi è possibile utilizzare la convalida lato client e lato server "automagic". Gioca molto bene con MVC.Quando si utilizzano le annotazioni di dati con MVC, Pro e Contro di utilizzare un'interfaccia rispetto a MetadataType
Tuttavia, un mio collega ha utilizzato un'interfaccia per ottenere esattamente lo stesso risultato. sembra quasi esattamente la stessa cosa e realizza funzionalmente la stessa cosa. Così, invece di fare questo:
[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; }
}
Lo ha fatto:
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; }
}
Quindi la mia domanda è, quando si fa la differenza in realtà importa?
I miei pensieri sono che le interfacce tendono ad essere più "riutilizzabili" e che la creazione di una sola classe non ha molto senso. Potresti anche argomentare che potresti progettare le tue classi e le tue interfacce in un modo che ti permetta di usare interfacce su più oggetti, ma mi sembra che stia cercando di adattare i tuoi modelli a qualcos'altro, quando dovrebbero davvero stare da soli. Cosa ne pensi?
Ho fatto esattamente questo e non ha funzionato ...: -S – Alxandr