5

私はオープン ソース プロジェクト (NopCommerce) を採用しています。これは優れたソフトウェアであり、プラグインを使用した拡張性をサポートしています。あるプラグインについて、ビューに情報を追加したいと思います。そのために、コントローラーから継承し、変更が必要なアクションをオーバーライドしたいと考えています。これが私のコントローラーです:

public class MyController : OldController{
//stuff

public new ActionResult Product(int productId)
{
 //Somestuff
}

}

プラグインからルートを変更しましたが、このアクションが呼び出されると次のエラーが発生します。

コントローラー タイプ 'MyController' のアクション 'Product' に対する現在の要求は、次のアクション メソッド間であいまいです: タイプ MyPlugin の System.Web.Mvc.ActionResult Product(Int32) タイプ OldController の System.Web.Mvc.ActionResult Product(Int32)

このメソッドをオーバーライドする方法はありますか? (ps: OldController で virtual、abstract、または override としてマークされていないため、override キーワードを使用できません)

ありがとう、オスカー

4

2 に答える 2

6

OldControllerのメソッドが少ない場合は、次のように再宣言します。

public class MyController : Controller 
{
    private OldController old = new OldController();

    // OldController method we want to "override"
    public ActionResult Product(int productid)
    {
        ...
        return View(...);
    }

    // Other OldController method for which we want the "inherited" behavior
    public ActionResult Method1(...)
    {
        return old.Method1(...);
    }
}
于 2013-02-20T02:46:18.713 に答える