Ich passe ein Open-Source-Projekt (NopCommerce) an. Es ist eine großartige Software und unterstützt die Erweiterbarkeit mit Plugins. Für ein Plugin möchte ich Informationen zu einer Ansicht hinzufügen, dazu möchte ich vom Controller erben und die Aktionen überschreiben, die ich ändern muss. Das ist also mein Controller:Gibt es eine Möglichkeit, eine MVC-Controller-Aktion zu überschreiben?
public class MyController : OldController{
//stuff
public new ActionResult Product(int productId)
{
//Somestuff
}
}
ich die Strecke von meinem Plugin geändert, aber wenn diese Aktion aufgerufen ich die folgende Fehlermeldung erhalten:
The current request for action 'Product' on controller type 'MyController' is ambiguous between the following action methods: System.Web.Mvc.ActionResult Product(Int32) on type MyPlugin System.Web.Mvc.ActionResult Product(Int32) on type OldController
Gibt es eine Möglichkeit, diese Methode überschreiben können ? (Ps: Ich kann nicht das Schlüsselwort override verwenden, da es nicht als virtuelle, abstrakte oder Überschreibung in den OldController gekennzeichnet)
Dank, Oscar
Wie wäre es nicht von 'OldController' _deriving_ sondern bieten alle' OldController' Methoden eingewickelt in Ihrer 'MyController' Klasse (eine Art ähnlich die [Proxy Muster] (http://www.dofactory.com /Patterns/PatternProxy.aspx#_self1)) –
Wenn es virtuell markiert wäre, hätte es funktioniert? Ich hätte auf perverse Weise gedacht, dass das, was du hättest, funktioniert hätte – Rikon
Was willst du erreichen, das ist nicht einfach erweiterbar von der aktuellen Controller-Klasse? –