2

T4MVC がコントローラ メソッドにvirtualを使用するのはなぜですか? 変更する

public ActionResult Details (string Id)

に:

public virtual ActionResult Details (string Id)

T4MVC に関する他の質問を既に見ましたが、その理由がわかりませんでした。

4

2 に答える 2

3

通常、フレームワーク/ライブラリが仮想メソッド (Nhibernate も参照) を必要とする場合、それはどこか/いつかメソッドがオーバーライドされることを意味します。

したがって、T4MVC はアクション メソッドをvirtualオーバーライドするため、アクション メソッドを としてマークします。

簡単なコントローラを見てみましょう:

public partial class HomeController : Controller
{
    public virtual ActionResult Index()
    {
        ViewBag.Message = "Welcome to ASP.NET MVC!";

        return View();
    }       
}

HomeController.generated.csの下にある generated に移動するT4MVC.ttと、コントローラーから継承し、アクション メソッドをオーバーライドする生成されたクラスが見つかります。

[GeneratedCode("T4MVC", "2.0"), DebuggerNonUserCode]
public class T4MVC_HomeController: MvcApplication8.Controllers.HomeController {
    public T4MVC_HomeController() : base(Dummy.Instance) { }

    public override System.Web.Mvc.ActionResult Index() {
        var callInfo = new T4MVC_ActionResult(Area, Name, ActionNames.Index);
        return callInfo;
    }

}

私は T4MVC を使用したことがないので、T4MVC がこの生成されたクラスを作成する理由と目的がわかりません。

于 2012-07-11T13:55:56.173 に答える