私の質問に関連するいくつかの投稿を読みましたが、特定の問題に対処するものはありません。
以下のクラスは、解析のために Razor エンジンに渡される情報を取得する情報を保持します。
public class ActionResult
{
public object ViewModel { get; set; }
public string View { get; set; }
}
ActionResult.ViewModel プロパティは、ビューが厳密に型指定されているため、ビューが必要とする任意のカスタム タイプのビュー モデル クラスのインスタンスを保持します。
かみそりエンジンを新調します。
var razorEngine = new RazorEngine(razorScriptFile, _moduleResult.ModuleContext, "");
次にrenderメソッドを呼び出します。そのシグネチャは...
public void Render<T>(TextWriter writer, T model){}
私が抱えている課題は、実行時に利用可能な actionResult インスタンス内の情報を使用して、この render メソッドを呼び出す方法がわからないことです。
メソッド呼び出しをハードコーディングすると、正常に動作します...
razorEngine.Render<MyViewModelType>(writer, actionResult.ViewModel);
しかし、私がすべきことは、actionResult.ViewModel を MyViewModelType として取得するか、MyViewModelType にキャストすることだと思います。しかし、実行時に Type を提供しながら razorEngine.Render() メソッドを呼び出す方法がわかりません。
.Net 4.5を使用
編集...
私ができると思ったのは..
Type type = actionResult.ViewModel.GetType();
var model = actionResult.ViewModel as type;
しかし、これは機能しません