Good evening,
I'm having problems using Generics
in C#
, I'm programmer Java
and I'm learning to use C#
.
Generics
in a class in the Service
package, I'm implementing the class for the mapped object, which would be Plano
and the PlanoDao
class.
Classes in the package Model:
namespace Cobranca.pkgModel
{
public abstract class Persistant
{
private long id;
//getter e setter
}
}
namespace Cobranca.pkgModel {
public class Plano : Persistant
{
private string nome;
private string tipoCobranca;
private double valor;
//getter e setter
}
}
Classes in the DAO package:
namespace Cobranca.pkgDao
{
public abstract class Dao<Model> where Model : Persistant
{
//métodos
}
}
namespace Cobranca.pkgDao
{
public class PlanoDao : Dao<Plano>
{
//metodos;
}
}
Classes in the Service package:
namespace Cobranca.pkgService
{
public abstract class Service<Model, DAO> where Model : Persistant where DAO : Dao<Persistant>
{
//métodos
}
}
namespace Cobranca.pkgService
{
public class PlanoService : Service<Plano, PlanoDao<Plano>>
{
//metodos
}
}
I'm in doubt if I'm doing it right, in class PlanoService
it generates error:
Gravidade Código Descrição Projeto Arquivo Linha Estado de Supressão
Erro CS0308 O tipo não genérico "PlanoDao" não pode ser usado como argumentos de tipo Cobranca C:\Users\Diego\source\repos\Cobranca\Cobranca\pkgService\PlanoService.cs 8 Ativo
What am I doing wrong?
I have already declared in the signature of class PlanoService
so too:
public class PlanoService : Service<Plano, PlanoDao>
But it continues to generate another error:
Gravidade Código Descrição Projeto Arquivo Linha Estado de Supressão
Erro CS0311 O tipo "Cobranca.pkgDao.PlanoDao" não pode ser usado como parâmetro de tipo "DAO" no tipo ou método genérico "Service<Model, DAO>". Não há conversão de referência implícita de "Cobranca.pkgDao.PlanoDao" em "Cobranca.pkgDao.Dao<Cobranca.pkgModel.Persistant>". Cobranca C:\Users\Diego\source\repos\Cobranca\Cobranca\pkgService\PlanoService.cs 8 Ativo
Who could save me?