MVC 与我的问题无关。不要对这个例子感到困惑。它是一个纯 C# 问题
问题的标题并不能很好地解释我认为的问题。
假设,我有一些实体类的基类,称为EntityBase
有些课程就像
class Entity1 : EntityBase
class Entity2 : EntityBase
我有一个抽象的存储库,可以处理实体的基本操作。声明是:
abstract class RepositoryBase<TEntity> where TEntity : EntityBase
并且这个类有几种实现
class Repository1 : RepositoryBase<Entity1>
class Repository2 : RepositoryBase<Entity2>
现在有一些带有基础的控制器:
public abstract class RepositoryControllerBase<TRepository, TEntity>
where TRepository : RepositoryBase<TEntity>
where TEntity : EntityBase
实现就像
class Controller1 : RepositoryControllerBase<Repository1, Entity1>
class Controller2 : RepositoryControllerBase<Repository2, Entity2>
现在,您一定已经注意到,当控制器中的存储库类型为 时Repository1
,实体类型必须为Entity1
。否则会出现编译错误。
所以,我认为有一种方法可以跳过第二种泛型类型并自动推断出那个。我只是不知道怎么做。有什么建议么?
?
也许,如果它是 Java ,这个问题可以很容易地解决。将 ControllerBase 声明替换为
public abstract class RepositoryControllerBase<TRepository>
where TRepository : RepositoryBase<?>