Ho 2 tipi: BaseQuestion
e Question
. Question
eredita alcune proprietà da BaseQuestion
. Ora ho creato un'API Web per rendere disponibile un BaseQuestion
. Il tipo di dati Question
ha proprietà aggiuntive che non desidero rendere disponibili. Ho un metodo che recupera uno Question
e il mio piano iniziale era semplicemente implicitamente lo upcast a BaseQuestion
. Ho pensato che avrebbe perso tutte le proprietà extra che non voglio rendere accessibile e potrei restituirlo. Beh, non è così. Questo è quello che faccio:C#: la superclasse ha ancora informazioni sottoclasse dopo l'aggiornamento
Question q = allQuestions[0];
BaseQuestion bq = q;
string type = bq.GetType().ToString();
Il tipo di bq è ancora "Domanda". Non riesco ad accedere alle proprietà di BaseQuestion, ma posso ancora vederle nel debugger e sono nell'output JSON che invio al client.
Qualche idea su come "forzare" bq per essere di tipo BaseQuestion
e per non avere proprietà definite nella sottoclasse?
Il tipo di bq variabile è BaseQuestion. Il tipo di runtime dell'oggetto a cui si riferisce bq è Question. Non sei sicuro di cosa intendi con "forza bq per essere di tipo BaseQuestion".Sarai in grado di accedere ai membri di BaseQuestion solo tramite la variabile bq. – lesscode
Penso che la tua confusione non stia comprendendo che ciò che hai dato sono ** riferimenti ** agli oggetti in memoria. –
Simon, buon punto. Quindi fammi riformulare: Come posso creare un nuovo oggetto di tipo Domanda e copiare automaticamente tutti i valori delle proprietà? Automaticamente intendo che io ** non ** voglio implementarlo. IMHO questo scenario non è affatto unico per la mia situazione e dovrebbe essere coperto da .NET. – Jan