【发布时间】:2013-02-04 22:39:44
【问题描述】:
我正在改编一个开源项目 (NopCommerce)。它是一个很棒的软件,并支持使用插件的可扩展性。 对于一个插件,我想向视图添加信息,为此,我想从控制器继承并覆盖我需要更改的操作。 所以这是我的控制器:
public class MyController : OldController{
//stuff
public new ActionResult Product(int productId)
{
//Somestuff
}
}
我从插件中更改了路由,但是当调用此操作时,我收到以下错误:
当前对控制器类型的“产品”操作请求 'MyController' 在以下操作方法之间不明确: MyPlugin 类型上的 System.Web.Mvc.ActionResult Product(Int32) 类型为 OldController 的 System.Web.Mvc.ActionResult Product(Int32)
有什么方法可以覆盖这个方法吗? (ps:我不能使用override关键字,因为它在OldController中没有标记为virtual、abstract或override)
谢谢, 奥斯卡
【问题讨论】:
-
不从
OldController派生,而是提供包装在MyController类中的所有OldController方法怎么样(有点类似于Proxy pattern) -
如果它被标记为虚拟,它会起作用吗?我会以一种反常的方式认为你所拥有的会奏效
-
您想要实现哪些无法从当前的 Controller 类轻松扩展?
-
@UweKeim 好主意 :) 我会试试的
-
@Rikon 我不知道,但我不想更改源代码以便能够更新到新版本;)
标签: c# asp.net asp.net-mvc-4 nopcommerce