T4MVC がコントローラ メソッドにvirtualを使用するのはなぜですか? 変更する
public ActionResult Details (string Id)
に:
public virtual ActionResult Details (string Id)
T4MVC に関する他の質問を既に見ましたが、その理由がわかりませんでした。
T4MVC がコントローラ メソッドにvirtualを使用するのはなぜですか? 変更する
public ActionResult Details (string Id)
に:
public virtual ActionResult Details (string Id)
T4MVC に関する他の質問を既に見ましたが、その理由がわかりませんでした。
通常、フレームワーク/ライブラリが仮想メソッド (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 がこの生成されたクラスを作成する理由と目的がわかりません。