6
|
MedicineMan · 技术社区 · 14 年前 |
![]() |
1
7
在默认操作描述符内引发的代码:
因为代码正在调用“methodinfo.containsGenericParameters”,我认为没有一种方法可以在不创建自己的actionDescriptor的情况下重写此行为。从源代码的角度来看,这似乎是不平凡的。 另一个选项是使控制器类成为通用类,并创建自定义通用控制器工厂。我有一些创建通用控制器的实验代码。虽然很简单,但这只是一个个人实验。
|
![]() |
2
1
六年后,当MVC5(和MVC6)在镇上时,我遇到了同样的问题。我正在用MVC5构建我的站点,这样我就可以安全地假设它还没有得到现成的支持。我登陆这里寻求解决办法。好吧,我最终找到了一种不侵入控制器或其工厂的方法来修复它,特别是因为我只在少数地方需要这个特性。 方法:稍微修改 Command Pattern (反正我已经在代码中使用过了)。 对于这个问题,首先定义接口
以及相应的实施:
处理程序(上面代码中的userd)如下所示:
有了以上这些,您现在所要做的就是根据类的具体情况为处理程序提供实现。
有了以上所有功能,您现在可以在控制器中简单地执行以下操作:
我知道这是一种额外的间接性,但效果很好。在我的例子中,我继续扩展处理程序和处理器,以便它们可以返回我想要的任何东西,而不仅仅是
如果有一个更简单的解决方案的话,我会很感兴趣的。我想使用MVC时出现这种问题是不常见的。 PS:任何好的IOC容器都应该能够通过扫描程序集注册开放的泛型。因此,一旦正确配置,就不需要显式注册处理程序接口的实现。 PPS: This post provides better insight to the answer given here 特别是关于如何推广这个解。 |