Non sono un programmatore esperto. Quindi chiedo.
Il campo in questione è il campo "Quantità". Memorizzo un importo solo in un paio di livelli della classe derivata.
Il codice è una porzione delle classi POCO che costituiscono il mio modello di dati, il datalayer è Entity framework, il codice prima.
Ne parlo perché la ragione per cui ho fatto la proprietà di quantità come ho fatto è perché quando ho inserito l'importo solo in una classe derivata o due e non nella classe Navigation, la tabella nel database avrebbe un campo aggiuntivo per ogni classe con una proprietà Amount, ad esempio (Quantità, Quantità1, Quantità2). Non mi è piaciuto.
Quindi, dopo aver provato il codice per un po 'ho scoperto che ...
Posizionare la proprietà Amount nella classe di navigazione e sovrascriverla nelle classi che implementavano Amount mi dava una tabella con un solo campo "Amount" che era Null, a meno che non fosse una delle classi che utilizzava l'importo nel qual caso aveva un valore, che era proprio quello che volevo. Mi è piaciuto.
Quindi la domanda è, è il modo in cui la proprietà Amount è gestita completamente corretta o ha qualche svantaggio?
public class Navigation
{
int Id { get; set; }
string Title { get; set; }
string Description { get; set; }
ObservableCollection<Navigation> Children { get; set; }
public virtual decimal? Amount
{
get { return null; }
set { value = null; }
}
}
public class C1 : Navigation { }
public class C2 : Navigation { }
public class C3 : Navigation
{
private decimal _amount;
public override decimal? Amount
{
get { return _amount; }
set { if (value != null) _amount = (decimal)value; }
}
}
public class C4 : Navigation
{
private decimal _amount;
public override decimal? Amount
{
get { return _amount; }
set { if (value != null) _amount = (decimal)value; }
}
}