我正在尝试编写一个泛型基类,它允许子类将接口(interface)作为类型传递,然后在泛型上使用基类调用方法,但我不知道该怎么做...
public class BaseController<T> : Controller where T : IPageModel
{
public virtual ActionResult Index()
{
IPageModel model = new T.GetType();
return View(model);
}
}
那不能编译,当涉及到泛型时,我是否理解错误?
最佳答案
我想你想要:
public class BaseController<T> : Controller where T : IPageModel, new()
{
public virtual ActionResult Index()
{
IPageModel model = new T();
return View(model);
}
}
注意
new()
上的 T
约束。 (有关更多信息,请参阅 MSDN on generic constraints。)如果您确实需要与
Type
对应的 T
引用,则可以使用 typeof(T)
- 但我认为在这种情况下您不需要它。关于c# - 如何从这种通用情况中获取类型?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8021775/