C#中的特殊方法方法定义

sha*_*fat 2 c#

我正在使用C#.我从未见过像这样的方法声明

private AuthorizationContext GetAuthorizationContext<TController>() where TController : ControllerBase, new()
    {
    }
Run Code Online (Sandbox Code Playgroud)

任何人都可以解释一下这些意味着什么.我对泛型类有清晰的认识.我的查询部分是'其中TController:ControllerBase,new()'

Des*_*tar 6

这是一种类型约束.它指定泛型类型(TController)必须满足的某些条件.在这种情况下,它必须从ControllerBase派生并具有无参数构造函数.

http://msdn.microsoft.com/en-us/library/d5x73970.aspx

有时将ANY类型用作泛型类型参数是没有意义的.例如,如果我想确保类型T具有某些方法,我可以强制它实现给定的接口.这提供了额外的类型安全性和编译时检查.