prendere questa classe come ad esempio:NHibernate eccezione: metodo Add dovrebbe essere 'pubblico/protetto virtuale' o 'protetti interno virtuale'
public class Category : PersistentObject<int>
{
public virtual string Title { get; set; }
public virtual string Alias { get; set; }
public virtual Category ParentCategory { get; set; }
public virtual ISet<Category> ChildCategories { get; set; }
public /*virtual*/ void Add(Category child)
{
if (child != null)
{
child.ParentCategory = this;
ChildCategories.Add(child);
}
}
}
Quando si esegue l'applicazione senza la parola chiave virtuale di metodo Add, ho ottenere questo errore:
method Add should be 'public/protected virtual' or 'protected internal virtual'
capisco perché le proprietà devono dichiarare come virtuale, perché thay bisogno di essere ignorato dalla funzione di lazy loading.
Ma non capisco perché i metodi devono essere dichiarati come virtuali ... devono essere sovrascritti per quale motivo?
Questo molto confuso!
Il richiedente stava chiedendo del razionale per aver richiesto che i metodi fossero specificamente virtuali. Ha spiegato che comprende già le classi proxy per il caricamento lento. –