Considérez ce morceau de code:Dans la bibliothèque d'entreprise, comment l'abstract Validator.cs a-t-il une définition de méthode?
public abstract class Validator
{
protected Validator()
{
}
protected abstract void ValidateCore(object instance, string value, IList<ValidationResult> results);
public void Validate(object instance, string value, IList<ValidationResult> results)
{
if (null == instance) throw new ArgumentNullException("instance");
if (null == results) throw new ArgumentNullException("results");
ValidateCore(instance, value, results);
}
}
Regardez la surcharge Validate()
, comment une classe abstraite des définitions comme celle-ci?
Oui - les méthodes abstraites ne sont pas des interfaces. –
En fait, une classe abstraite ne peut avoir aucune méthode abstraite (vous pouvez la tester), bien que ce ne soit pas une manière habituelle de définir des classes abstraites. –
hmm ... intéressant, merci! – Soham