为什么我不能声明一个也继承的泛型基类?

本文关键字:继承 泛型 基类 一个 不能 声明 为什么 | 更新日期: 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
{
    ...
}