我有一个类,它实现了其他类的接口(interface)和继承。
我不知道为什么我的代码很糟糕。
我得到的错误是:
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>>'.
我认为我的界面和类都可以。我不知道为什么 VS 会抛出错误。
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);
}
}
最佳答案
您已经定义了您的ServiceTypeClass
作为
public class SizeTypeService : GenericService<SizeType>, ISizeTypeService
{
...
}
所以你告诉编译器 ServiceTypeService
使用基类 GenericService
与 TEntity
定义为SizeType
。但是,ISizeTypeService
它也派生自的接口(interface)告诉编译器该类也实现了 IGenericService
接口(interface)在哪里TEntity
是 ItemType
类(class)。但代码中没有任何类实现方法 GenericService<ItemType>.GetAll()
.
所以,错误是说“嘿 - 我找到了匹配 GenericService<SizeType>.GetAll()
的方法 - 其中 TEntity
是 SizeType
,但我找不到匹配 IGenericService<ItemType>.GetAll()
的方法”
要解决此问题,您需要更改 ISizeTypeService
定义使用与 GenericService
相同的类对于 TEntity
例如
public interface ISizeTypeService : IGenericService<SizeType>
{
...
}
注意:通用参数现在为 SizeType
与 GenericService<SizeType>
匹配基类 SizeTypeService
源自。
关于c# - 为什么此错误表明我的类没有实现此接口(interface)方法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/71026692/