S'il vous plaît considérer la conception suivante:propriété scellé de la classe abstraite
public interface IBook
{
string Author { get; set; }
string Title { get; set; }
}
abstract class BaseBook : IBook
{
private string _title;
public virtual string Author
{
get
{
Console.WriteLine("Base book GET!");
return _title;
}
set
{
Console.WriteLine("Base book SET!");
_title = value;
}
}
public string Title { get; set; }
}
class Book : BaseBook
{
}
class SuperBook : Book
{
public override string Author
{
get
{
Console.WriteLine("SuperBook GET!");
return base.Author;
}
set
{
Console.WriteLine("SuperBook SET!");
base.Author = value;
}
}
public string Title { get; set; }
}
Est-il possible rendre la propriété Title
de la classe de base BaseBook
scellée pour empêcher la propriété d'être substituée dans les classes dérivées (comme les classes Book
et SuperBook
)?
Et pourquoi voudriez-vous une telle chose? Y at-il une raison particulière pour laquelle un utilisateur ne devrait pas être autorisé à remplacer votre propriété? –