私はOOPとC#に本当に慣れていないので、コードをできるだけDRYとして書く方法を理解しようとしています。私の ASP.NET MVC 3 アプリケーションでは、コントローラーに複数のアクション (このサンプル コードでは 2 つ) があり、ViewModel
それらはすべて同じ を継承する異なる を返しBaseViewModel
ます。これは、すべてのアクションで同じデータが必要ですが、それぞれに追加のプロパティが必要だからです。
ActionOneViewModel
オブジェクトを受け取るコンストラクターを簡単に作成できることはわかっていViewModel
ます。しかし、これはこれを行う一般的な方法ですか?または、代替手段はありますか?
モデルを見る:
class BaseViewModel
{
public string Name { get; set; }
public List<User> Users { get; set; }
}
class ActionOneViewModel : BaseViewModel
{
public bool FooBar { get; set; }
}
class ActionTwoViewModel : BaseViewModel
{
public string PingPong { get; set; }
}
コントローラーのアクション:
public ActionResult ActionOne ()
{
// this doesn't work (of course)
ActionOneViewModel model = (ActionOneViewModel)createViewModel();
model.FooBar = true;
return View(model);
}
public ActionResult ActionTwo ()
{
// this doesn't work (of course)
ActionTwoViewModel model = (ActionTwoViewModel)createViewModel();
model.PingPong = "blub";
return View(model);
}
private BaseViewModel createViewModel()
{
BaseViewModel model = new BaseViewModel();
//
// doing a lot of stuff here
//
return model;
}