ho una classe definita come:bambino non chiamato quando l'elemento di base accessibile
public class DatabaseEntity<T> where T : DatabaseEntity<T> {
public static string Query { get; protected set; }
public static IList<T> Load() {
return Database.Get(Query);
}
}
public class Node : DatabaseEntity<Node> {
static Node() {
Node.Query = @"SELECT Id FROM Node";
}
}
Quando eseguo Node.Load()
da un codebehind (Window.xaml.cs
) costruttore statico del nodo mai incendi; o almeno non ha colpito un breakpoint e non imposta Node.Query su qualcosa di diverso da null.
C'è qualche motivo per cui questo potrebbe accadere?
Soluzione
Scopri i migliori risposte qui sotto per un paio di soluzioni. Nel mio caso, ho deciso di rendere pubblica la variabile Query
e di impostare tutte le istanze di Query
in un unico punto. (Non ideale, ma funziona.)
Viene serializzato tramite DataContractSerializer? Come ricordo che DCS non licenzia i costruttori. – PhillipH
Perché non fare semplicemente query 'private const string Query = [query];'? – atlaste
Non lo è. Tuttavia, 'Load()' è in realtà una funzione statica ereditata. Questo farebbe la differenza? –