我正在尝试编写一个泛型基类,它允许子类将接口(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/

10-10 20:05