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

1688 ワード

今日、プロジェクトに精通しているとき、次のコードに出会ったとき、どういう意味か分からなかったので、記録しておきます.
 
 
    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がサポートするタイプのパラメータ制約には、次の5つがあります.
 
where T : struct                               | T 
where T : class                               T (class) 
where T : new()                               | T 
where T : NameOfBaseClass          | T NameOfBaseClass 
where T : NameOfInterface             | T NameOfInterface