`

public void Delete<T>(List<T> EntityList) where T : class, new()

    博客分类:
  • C#
C#T 
阅读更多

今天熟悉项目时遇到下面这段代码竟不知道什么意思,记录一下:

 

 

    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的接口

 

 

 

 

 

 

 

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics