RazorEngineを使用してEメールクラスのC#実装を変換し、Razorテンプレートを解析してから、VB.NETにEメールを送信しようとしています。これはC#でうまく機能しますが、C#動的型からVB.NETの「オブジェクト」型への変換で問題が発生しています(これは私が識別できるものから最も近いものです)。
たとえば、このコードはC#でうまく機能します。
public static string GetEmailBody(string templatePath, dynamic model)
{
var template = File.ReadAllText(templatePath);
var body = Razor.Parse(template, model);
return body;
}
VB.NETへの変換で、次のような関数呼び出しが発生しました。
Private Shared Function RenderEmailBody(strTemplate As String, model As Object) As String
Dim template As String = File.ReadAllText(strTemplate)
Dim body As String = Razor.Parse(template, model)
Return body
End Function
そして、それに対する私の呼び出しは次のようになります:
RenderEmailBody("mytemplate.vbhtml", New With { .Var1 = "1", .Var2 = "2" })
ただし、これを実行すると、次の例外がスローされます。
TemplateCompilationException was unhandled by user code
Unable to compile template. 'object' does not contain a definition for 'Var1' and no extension method 'Var1' accepting a first argument of type 'object' could be found (are you missing a using directive or an assembly reference?)
ブレークポイントで検査するmodel
と、Var1とVar2が正しく割り当てられているように見えますが、呼び出しに到達するとRazor.Parse
、動的オブジェクトが正しく解釈されないという問題が継続的に発生します。
私はここで何か間違ったことをしていますか?または、2つのタイプの間に固有の非互換性がありますか?