【发布时间】:2017-10-03 13:52:14
【问题描述】:
我有这个树接口/类
BaseRepository.cs
abstract public class BaseRepository<Entity> : IRepository
where Entity : BaseEntity, new()
{
public virtual IList<Entity> FindAll()
{
...
return list;
}
}
尝试使用泛型自动化获取、更新、插入 webapi 创建
BaseApiController
public class BaseEntityApiController<Repository> : ApiController
where Repository : BaseRepository<BaseEntity>, new()
{
Repository repository = new Repository();
public IList<BaseEntity> Get()
{
return repository.FindAll();
}
}
用户存储库
public class UserRepository : BaseRepository<User>
{
}
我创建了一个从 BaseApiController 继承并传递 UserRepository 的新控制器:
用户控制器
public class UserController : BaseApiController<UserRepository>
{
}
我收到此错误:
Project.UserRepository cannot be used as type parameters 'Repository' in the generic type or method 'BaseApiController<Repository>'. There is no implicit reference conversion from Project.UserRepository to Project BaseRepository<Project.BaseEntity>.
如何将我的通用类型 UserRepository 传递给我的 BaseApiController 以自动创建所有控制器中使用的 Api?
【问题讨论】:
-
User是否继承自BaseEntity? -
@Flater 是用户从 BaseEntity 继承
-
我会将访问修饰符放在抽象之前。
code公共抽象类 BaseRepository: IRepository code
标签: c# generics inheritance abstract-class type-constraints