Aar*_*mer 27 asp.net generics asp.net-mvc controller
我正在尝试创建一个通用控制器,即:
public class MyController<T> : Controller where T : SomeType
{ ... }
Run Code Online (Sandbox Code Playgroud)
但是,当我尝试使用它时,我到处都遇到了这个错误......
控制器名称必须以"控制器"结尾
所以,我的问题,是否有可能在asp.net mvc中创建一个通用控制器?
谢谢!
Jef*_*itz 37
如果我理解你正确,你想要做的是通过类型T的通用控制器路由给定模型的所有请求.
您希望T根据所要求的型号而变化.
你/Product/Index想要触发MyController<Product>.Index()
这可以通过编写自己IControllerFactory的CreateController方法并实现如下方法来实现:
public IController CreateController(RequestContext requestContext, string controllerName)
{
Type controllerType = Type.GetType("MyController")
.MakeGenericType(Type.GetType(controllerName));
return Activator.CreateInstance(controllerType) as IController;
}
Run Code Online (Sandbox Code Playgroud)
是的,你可以,没关系,我自己也经常使用它们.
您需要确保的是,当您从MyController继承时,您仍然使用控制器结束类型名称:
public class FooController : MyController<Foo>
{
...
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
19969 次 |
| 最近记录: |