public class ManagerBaseController<TIService, TService, TEntity> : PermissionsController where TIService : IBaseService<TEntity> where TService : TIService, new() where TEntity : class, new()
ManagerBaseController这个类使用了泛型,你在实例化的时候需要指定这三个类型TIService, TService, TEntity
后面的where 是对这三个类型做了限制,where TIService : IBaseService<TEntity>这个意思是说TIService这个类型必须是继承 IBaseService<TEntity>的。where TEntity : class, new()是说TEntity必须是一个类,后面的new()这个类必须要有无参的或者默认的构造参数。
楼上的应该是楼主想要的解释
这代码是谁写的?
不是我
@simadi: 不是你写的,那你从哪儿抄来的?
@Launcher: 咱直接切入正题好不好?纠缠这个有啥用??
@simadi: 因为我想知道你到底想得到什么样的解释。
@Launcher:
@simadi: 这段涉及到以下几点:
1、继承;
2、泛型;
3、泛型约束;
你想让我解释哪个?
@Launcher: 楼主 Launcher说的很对 这里包括这个几个知识
感觉这种问题多了不是好事.
这要知道业务才能知道这段代码的意义,否则解释都太表面,意义不大
泛型约束
where TIService : IBaseService<TEntity> 必须继承它
where TService : TIService, new() 必须继承TIService并且是可以new的
where TEntity : class, new() 一个可以实例化(new)的类
把代码再站出来点,看看玩啥呢是
看命名,估计是权限控制,小白告辞!
从字面上理解,public class ManagerBaseController<TIService, TService, TEntity> : PermissionsController
继承PermissionsController,而后面的 where TIService : IBaseService<TEntity> where TService : TIService, new() where TEntity : class, new() 就是对上面泛型类里的参数做了约束。