多くの場合、MVC ビューを作成するときは、最初にビューを にバインドExpandoObjectして、厳密に型指定されたビューモデルで実際のプロパティを追加/変更/削除するのに時間を費やすことなく、ビューモデルの形状をすばやく把握できるようにします。
しかし、自分のビューモデルがどのように見えるべきかについてかなり良い感触を得たら、実際のクラスを作成することを好みます。ExpandoObject からビューモデルを自動的に生成できれば素晴らしいと思います。それは可能ですか?
public virtual ActionResult DoStuff(int stuffId)
{
// eventually this stuff gets moved to a service class
dynamic vm = new ExpandoObject();
using (var ctx = new MyContext())
{
vm.Stuff = ctx.Stuff
.Where(x => x.Id == stuffId)
.Select(x => new
{
Foo = x.Foo,
Bar = x.Bar
}).SingleOrDefault().ToExpando();
}
// once I know what vm looks like, I'll want to do this to easily create a new class
// string stronglyType = GenerateStronglyTypeClass(vm);
return View(vm);
}
public string GenerateStronglyTypedClass(ExpandoObject object)
{
// what goes here??
}