为什么我不能声明一个也继承的泛型基类?
本文关键字:继承 泛型 基类 一个 不能 声明 为什么 | 更新日期: 2023-09-27 18:13:32
我真的很想这样做…
public class BaseController<T> where T : IPageModel, Controller
但是visual studio不喜欢它。Controller是MVC中的一个类。I页模型确保了对一些模型的访问。我的语法写错了吗?
正确的语法是:
public class BaseController<T>: Controller where T : IPageModel
紧跟where
关键字的所有内容都被视为泛型约束声明。在您的例子中,您希望您的类派生自Controller
,因此您首先指示这一点,然后在最后指定泛型约束。
现在你的实际控制器可以从这个基本控制器派生:
public class FooController: BaseController<Foo>
{
...
}
显然Foo
必须实现IPageModel
,这是由通用约束强制执行的:
public class Foo: IPageModel
{
...
}