今天熟悉项目时遇到下面这段代码竟不知道什么意思,记录一下:
public T CreateViewModel<T>() where T : BaseViewModel, new()
{
T viewModel = new T
{
SiteTitle = Settings.SiteTitle,
SiteDescription = Settings.SiteDescription,
RootUrl = Settings.RootUrl.TrimEnd('/'),
AbsolutePath = Settings.AbsolutePath.TrimEnd('\\'),
MetaKeywords = Settings.MetaKeywords,
MetaDescription = Settings.MetaDescription,
IsCurrentUserAuthenticated = IsCurrentUserAuthenticated,
CurrentUser = CurrentUser,
ThemeName = ThemeName,
StyleSheetUrl = GetThemeStyleSheetUrl()
};
if (CurrentUser != null)
{
viewModel.IsAdmin = CurrentUser.SysRoles.Contains(SysRoles.Administrator);
}
else
{
viewModel.IsAdmin = false;
}
return viewModel;
}
查找后发现这是类型参数约束,.NET支持的类型参数约束有以下五种:
where T : struct | T必须是一个结构类型
where T : class T必须是一个类(class)类型
where T : new() | T必须要有一个无参构造函数
where T : NameOfBaseClass | T必须继承名为NameOfBaseClass的类
where T : NameOfInterface | T必须实现名为NameOfInterface的接口
分享到:
相关推荐
- `void InsertVolume<T>(IEnumerable<T> entityList)`:批量插入数据的方法,遍历传入的`entityList`,对每个元素调用`Insert`方法进行插入。 - `IEnumerable<T> Query(Func<T, bool> match)`:这是一个简单的...
public static List<T> DataTableToEntityList<T>(DataTable dt) where T : new() { List<T> entityList = new List<T>(); foreach (DataRow row in dt.Rows) { T entity = new T(); var properties = typeof(T...
Set<UserInfoEntity> entityList = new HashSet<UserInfoEntity>(); for (int i = 0; i < 1000000; i++) { UserInfoEntity entity = new UserInfoEntity(); entity.setAge(r.nextInt()); int number = random....
List<T> topLevelList = new ArrayList<>(); for (T entity : entityList) { treeMap.put(entity.getId(), entity); if (entity.getParentId() == null || entityList.stream().noneMatch(e -> e.getId()....
XmlSerializer xs = new XmlSerializer(typeof(List<Entity>)); using (StreamWriter sw = File.CreateText(configPath)) { xs.Serialize(sw, entityList); } ``` 生成的 XML 文档如下所示: ```xml <?xml version...
public static void BulkInsert<T>(this DbContext context, IEnumerable<T> entities) where T : class { // 获取DbSet对象 DbSet<T> dbSet = context.Set<T>(); // 将所有实体添加到DbContext的...
List entityList = new ArrayList<>(); while (rs.next()) { Object entity = entityClass.getDeclaredConstructor().newInstance(); for (Field field : entityClass.getDeclaredFields()) { String column...
public boolean batchInsert(List<YourEntity> entityList) { for (YourEntity entity : entityList) { // 根据唯一索引查询是否存在相同记录 if (count(new QueryWrapper<YourEntity>().eq("unique_field", ...
ModelAndView modelAndView = new ModelAndView("entityList"); modelAndView.addObject("entities", entities); modelAndView.addObject("currentPage", pageNum); modelAndView.addObject("totalPages", ...
MyBatis-Plus 支持批量插入、更新和删除,如 `insertBatch(List<T> entityList)`, `updateBatch(List<T> entityList)` 和 `deleteBatchByIds(Collection<? extends Serializable> idList)`。这些方法可以显著提高...
接口:: entityList 接口:: engineVgui 接口:: modelRender 接口:: modelInfo 接口:: materialSystem 钩子 创建移动 油漆穿越 交换窗口 投票事件 DrawModelExecute FrameStageNotify 画 特征 ms 静电除尘器 ...
val entityList = listOf(User::class.java) GenerationTools.generate(db, entityList) } private fun dropAllTables(db: SQLiteDatabase?) { GenerationTools.dropAllTables(db, false) } } ``` 五、...
<Animated.View style={styles.mask}> </Animated.View> <Animated.View style={[{ width: aWidth, height: this.state.aHeight, left: middleLeft, ...Platform.select({ ios: { bottom: -20, }, }), ...
List<entity> entityList = entityPOMapper.query(start, end); ``` 这里的`query`方法是Mapper接口中的一个方法,它接收起始位置和结束位置作为参数,返回指定范围内的数据。 接着,我们需要创建一个`...
- **实体的强类型集合EntityList**:讲解EntityList的使用场景和方法,包括添加、删除、查询等操作。 - **实体的资源属性和强类型访问属性的辅助类EntityRes**:介绍EntityRes类的功能及其在实体属性访问中的应用。 ...
- Entity和EntityList:实体对象的管理。 - DataSet:数据集的组织和管理。 - DataProvider和DataResolver:数据访问接口。 - DataPath:数据路径的标识。 #### 数据控件(CEUG) - **概述**:数据控件用于显示...