为简单起见,假设我有以下抽象基 Controller 类:
public abstract class RESTController : Controller
{
public abstract JsonResult List();
public abstract JsonResult Get(Guid id);
public abstract JsonResult Create(object obj);
public abstract JsonResult Update(object obj);
public abstract JsonResult Delete(Guid Id);
}
对于创建和更新方法,我不仅要覆盖方法,还要覆盖参数的类型。
通常我会像这样使用泛型:
public abstract JsonResult Create<T>(T obj);
但是这是一个 MVC 操作,无法指定类型参数。
我有哪些选择?如果我将其保留为 (object obj)
,MVC 模型绑定(bind)器能否正常工作?
var model = obj as MyViewModel;
无论如何,这都不是很干净。任何帮助将不胜感激。
最佳答案
行中的一些东西怎么样:
public abstract class RESTController<T> : Controller
{
public abstract JsonResult List();
public abstract JsonResult Get(Guid id);
public abstract JsonResult Create(T obj);
public abstract JsonResult Update(T obj);
public abstract JsonResult Delete(Guid Id);
}
并且在覆盖时:
public FooController: RESTController<Foo>
{
...
public override JsonResult Create(Foo obj)
{
throw new NotImplementedException();
}
...
}
关于c# - MVC Abstract Base Controller Override modelbinding 参数类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4059543/