Pergunta

Eu tenho uma classe abstrata 'Servidor', que eu crio no meu JavaScript na minha interface do usuário e, em seguida, eu quero ter um método no meu serviço web que faz o seguinte:

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();
}

O problema que estou tendo é que o servidor não pode ser desserializado como é abstrato, eu preciso ter um método para cada Servidor tenho que herda do tipo concreto ou seja

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();
}

Eu realmente aprecio sua ajuda como eu não sou certo o que é a melhor solução

O erro exato que recebo é:

Instâncias de classes abstratas não pode ser criado.

Foi útil?

Solução

WCF apoiará herança, mas você precisa para decorar o seu contrato de dados com o tipo conhecido attibute. Por exemplo:

[DataContract]
[KnownType(typeof(Customer))]
class Contact
{
   [DataMember]
   public string FirstName
   {get;set;}

   [DataMember]
   public string LastName
   {get;set;}
}
[DataContract]
class Customer : Contact
{
   [DataMember]
   public int OrderNumber
   {get;set;}
}

HTH.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top