Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

250
Vistas
¿Por qué este error indica que mi clase no implementa este método de interfaz?

Tengo una clase que implementa una interfaz y un legado de otra clase.

No sé por qué mi código es malo.

El error que me sale es:

 CS0738 'SizeTypeService' does not implement interface member 'IGenericService<ItemType>.GetAll()'. 'GenericService<SizeType>.GetAll()' cannot implement 'IGenericService<ItemType>.GetAll()' because it does not have the matching return type of 'Task<List<ItemType>>'.

Creo que mi interfaz y mi clase están bien. No sé por qué VS arroja un error.

 public interface IGenericService<TEntity> where TEntity : class { Task<List<TEntity>> GetAll(); Task<TEntity> GetById(int id); Task<TEntity> Insert(TEntity entity); Task<TEntity> Update(TEntity entity); Task Delete(int id); } public class GenericService<TEntity> : IGenericService<TEntity> where TEntity : class { private IGenericRepository<TEntity> genericRepository; public GenericService(IGenericRepository<TEntity> genericRepository) { this.genericRepository = genericRepository; } public async Task Delete(int id) { await genericRepository.Delete(id); } public async Task<List<TEntity>> GetAll() { return await genericRepository.GetAll(); } public async Task<TEntity> GetById(int id) { return await genericRepository.GetById(id); } public async Task<TEntity> Insert(TEntity entity) { return await genericRepository.Insert(entity); } public async Task<TEntity> Update(TEntity entity) { return await genericRepository.Update(entity); } } public interface ISizeTypeService : IGenericService<ItemType> { Task<List<SizeType>> GetAllSizeTypeActives(int id); Task LogicDelete(int id); } public class SizeTypeService : GenericService<SizeType>, ISizeTypeService { private ISizeTypeRepository sizeTypeRepository; public SizeTypeService(ISizeTypeRepository sizeTypeRepository) : base(sizeTypeRepository) { this.sizeTypeRepository = sizeTypeRepository; } public Task<List<SizeType>> GetAllSizeTypeActives(int id) { return sizeTypeRepository.GetAllSizeTypeActives(id); } public Task LogicDelete(int id) { return sizeTypeRepository.LogicDelete(id); } }
over 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

Ha definido su ServiceTypeClass como

 public class SizeTypeService : GenericService<SizeType>, ISizeTypeService { ... }

Entonces le está diciendo al compilador que ServiceTypeService usa la clase base GenericService con TEntity definida como SizeType . PERO, la interfaz ISizeTypeService de la que también se deriva le dice al compilador que esta clase también implementa la interfaz IGenericService donde TEntity es una clase ItemType . Pero en ninguna parte del código hay una clase que implemente el método GenericService<ItemType>.GetAll() .

Entonces, el error dice "oye, encontré el método que coincide con GenericService<SizeType>.GetAll() - donde TEntity es SizeType , pero no puedo encontrar uno que coincida con IGenericService<ItemType>.GetAll() "

Para solucionarlo, debe cambiar la definición de ISizeTypeService para usar la misma clase que GenericService para TEntity

p.ej

 public interface ISizeTypeService : IGenericService<SizeType> { ... }

NOTA: El parámetro genérico ahora es SizeType , que coincide con la clase base GenericService<SizeType> de la que deriva SizeTypeService .

over 4 years ago · Santiago Trujillo Denunciar

0

Simplemente Ged explicó claramente. Como código en su ISizeTypeService

 public interface ISizeTypeService: IGenericService<ItemType> { }

Porque obtiene Task<List> IGenericRepository.GetAll() en GenericService. Entonces

ingrese la descripción de la imagen aquí

También recibí un error similar, luego agregué el siguiente código en SizeTypeService.cs y el error desapareció

 Task<List<ItemType>> IGenericService<ItemType>.GetAll() { throw new NotImplementedException(); }
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda