La mia domanda non è probabilmente ben formulata ed è probabilmente una vittima, ma qui vadoC# perché non è possibile sovrascrivere la proprietà statica? (Come possono le classi di alto livello chiamare il metodo della classe base con i dati di alto livello)
class person {
protected static string request = "select * from person where gender in ('male','female')";
public string sharedmethod()
{
return "the request is" + request;
}
}
class man:person
{
override protected static string request = "select person.*,man.* from person,men where mytype in ('male') ";
DateTime dateOfFirstCar;
}
class woman:person
{
override protected static string request = "select person.*,woman.* from person,women where mytype in ('female') ";
DateTime dateOfFirstITBAG;
}
class Program
{
static void Main(string[] args)
{
if (new person().sharedmethod() == new man().sharedmethod())
Console.Write("too bad query is the same in base and dervide class");
}
}
Un uomo è una persona
Una donna è una persona
persona, uomo, donna esiste nel mio database, ma hanno bisogno di query diverse
non voglio duplicare quelle domande così ho pensato che fosse una buona idea per memorizzarli in una proprietà statica in ogni classe.
ho avuto alcune cose di basso livello (non capito lì) che si trovano nella classe di base (coz io non voglio duplicare) e volevo ereditato classi di chiamare il metodo della classe base con il contesto delle classi ereditata
voglio uomo. [ereditato] someMethod() per eseguire person.somemethod(), ma con le variabili provenienti da uomo
ringraziamento
grazie ma per quanto riguarda la query per persona? – frenchone
@frenchone Ho perso quella parte. Devi rendere la proprietà 'virtual' invece di' abstract', aggiungere un'implementazione nella classe 'person' e aggiungere un' override' alle implementazioni derivate. – dasblinkenlight
Ok, ci provo io – frenchone