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

时间:2011-11-05 16:52:06

标签: c# oop

我真的想这样做......

 public class BaseController<T> where T : IPageModel, Controller

但是视觉工作室并不喜欢它。 Controller是MVC的一个类。我的页面模型确保了一些模型的东西。我的语法错了吗?

1 个答案:

答案 0 :(得分:8)

正确的语法是:

public class BaseController<T>: Controller where T : IPageModel

where关键字后面的所有内容都被视为通用约束声明。在您的情况下,您希望您的类派生自Controller,因此您首先要指明这一点,并在结束时指定通用约束。

现在你的实际控制器可以从这个基本控制器派生出来:

public class FooController: BaseController<Foo>
{
    ...
}

显然Foo必须实现由通用约束强制执行的IPageModel

public class Foo: IPageModel
{
    ...
}