Ho una classe astratta 'Server', che creo nel mio JavaScript nel mio UI e poi voglio avere un metodo sul mio servizio Web che esegue le seguenti operazioni:Deserialize classe astratta
public List<Database> GetDatabases(Server server)
{
Type type = server.GetType();
Server x = null;
if (typeof (SqlServer2005Server).Equals(type))
{
x = new SqlServer2005Server();
}
// Return the Databases from the server
return x.GetDatabases();
}
Il problema che ho sto avendo è che Server non può essere deserializzato come è astratto, non ho bisogno di avere un metodo per ogni server che ho, che eredita dal tipo cioè di cemento
public List<Database> GetDatabases(SqlServer2005Server server)
{
// Return the Databases from the server
return SqlServer2005Serverx.GetDatabases();
}
public List<Database> GetDatabases(OracleServer server)
{
// Return the Databases from the server
return SqlServer2005Serverx.GetDatabases();
}
Vorrei davvero apprezzare il vostro aiuto come io non sono sicuro qual è la soluzione migliore
L'errore esatto che ricevo è: non è possibile creare
istanze di classi astratte.
Grazie per la tua risposta, posso aggiungere diversi KnowTypes. cioè [DataContract] [KnownType (typeof (Cliente))] [KnownType (typeof (Employee))] [KnownType (typeof (Alien))] class Contattare { ... molto apprezzato Phill –
Funzionerà anche con le classi astratte, posso vedere nel tuo esempio che è una classe normale? Grazie ancora, Phill –
Ciao Phil, se vuoi, puoi aggiungere tutti gli attributi di KnownType di cui hai bisogno. Tutto dipende dalla profondità della catena ereditaria. HTH. In bocca al lupo. – stephenl