Ho un'interfaccia che dichiara alcune proprietà (abbreviate in Id
solo nell'esempio) con solo un metodo get
. Le classi che implementano questa interfaccia non devono fornire un setter pubblico per questo alloggio:Aggiunta del setter alla proprietà di sola lettura ereditata nell'interfaccia C#
public interface IMetadataColumns
{
Int32 Id { get; }
}
ora ho bisogno di un'altra interfaccia con le stesse proprietà, ma ora tutti devono essere scrivibile pure. Così ho aggiunto una nuova interfaccia che eredita da quella vecchia in cui ogni struttura dispone anche di un setter:
public interface IMetadataColumnsWritable : IMetadataColumns
{
Int32 Id { get; set; }
}
Visual Studio ora sottolinea questo e mi avverte di utilizzare la parola chiave new
se nascondere le vecchie proprietà era destinato.
Cosa devo fare ora? Ho classi che implementano l'interfaccia IMetadataColumns
che necessita di alcune proprietà per essere di sola lettura, ma ho anche altre classi in cui esattamente le stesse proprietà devono essere anche modificabili.
Credo che nasconde una proprietà suoni in qualche modo non come la strada da percorrere ...
Penso che nascondere la proprietà sia la maniera corretta di andare, le classi che implementano IMetadataColumns avranno ancora solo proprietà read e le classi che implementano IMetadataColumnsWritable avranno la proprietà read/write. –