Sto utilizzando VS 2010 RTM e sto tentando di eseguire alcune convalide di base su un tipo semplice utilizzando MetadataTypeAttribute. Quando inserisco l'attributo di validazione nella classe principale, tutto funziona. Tuttavia, quando lo metto nella classe dei metadati, sembra essere ignorato. Devo mancare qualcosa di banale, ma sono stato bloccato su questo per un po 'di tempo.Attributo .NET 4 RTM MetadataType ignorato quando si utilizza Validator
Ho esaminato il blocco di convalida di Enterprise Library come soluzione alternativa, ma non supporta la convalida di singole proprietà out of the box. Qualche idea?
class Program
{
static void Main(string[] args)
{
Stuff t = new Stuff();
try
{
Validator.ValidateProperty(t.X, new ValidationContext(t, null, null) { MemberName = "X" });
Console.WriteLine("Failed!");
}
catch (ValidationException)
{
Console.WriteLine("Succeeded!");
}
}
}
[MetadataType(typeof(StuffMetadata))]
public class Stuff
{
//[Required] //works here
public string X { get; set; }
}
public class StuffMetadata
{
[Required] //no effect here
public string X { get; set; }
}
Grazie per questo eccellente blurb di codice !! – aikeru
Perché questo non è indicato nella lista MetadataTypeAttribute su MSDN? Sono stato appeso per un paio d'ore b/c nel mio progetto MVC tutto funziona bene, ma quando creo la mia app per Windows ho bisogno di spiegazioni –