Ho una classe di base che ha una proprietà virtuale:Quale eccezione si deve lanciare quando non è consentito un setter di proprietà?
public virtual string Name { get; set; }
poi ho una classe derivata che prevale solo il getter della proprietà
public override string Name
{
get { return "Fixed Name"; }
}
Il problema è questo sostituisce solo il getter. Se qualcuno chiama il setter verrà chiamato il setter della base e il chiamante non saprà che è inefficace.
Così ho pensato di fare qualcosa di simile:
public override string Name
{
get { return "Fixed Name"; }
set { throw new Exception(); } //which exception type?
}
Quindi due (domande relative):
- C'è un modello migliore per me di utilizzare?
- Se dovrei usare lo schema sopra, quale eccezione usare?
Edit: Alcuni motivi per cui una sola eccezione sarebbe preferibile rispetto ad un altro sarebbe bene. Il mio collega ed io abbiamo avuto lo stesso argomento tra NotSupported
e InvalidOperation
.
C'è una ragione per cui è necessario il setter nella classe base? –
@DarylTeo sì, la classe base deve supportare l'impostazione manuale del nome, sebbene possa essere nel costruttore. – Ray