2009-06-11 10 views
1

ラムダ式を使用するC#のこの行は、VB.Net内ではどうなりますか?C#からVB.Netへのラムダ式

string s = blockRenderer.Capture(() => RenderPartialExtensions.RenderPartial(h, userControl, viewData)); 

の機能を備えた何か - 私はそれがこのようなものでなければなりません正確にどのように...

答えて

5

を把握することはできません。このオンラインC# to VB.NET converterをチェック

Dim s As String = blockRenderer.Capture(Function() RenderPartialExtensions.RenderPartial (h, userControl, viewData)) 
3

。それは常に完璧なものになるわけではありませんが、私はそれを使ったことがあります。

Dim s As String = blockRenderer.Capture(Function() RenderPartialExtensions.RenderPartial(h, userControl, viewData)) 
1
Dim s As String = _ 
    blockRenderer.Capture(_ 
     Function() RenderPartialExtensions.RenderPartial(h, userControl, viewData) _ 
    ) 
1

VB.NETでのラムダ式は、戻り値を持っている必要があり、解決策は、ラッパー・メソッドです。

Public Shared Function RenderPartialToString(ByVal userControl As String, ByVal viewData As Object, ByVal tempData As Object, ByVal controllerContext As ControllerContext) As String 

     Dim h As New HtmlHelper(New ViewContext(controllerContext, New WebFormView("omg"), viewData, tempData), New ViewPage()) 
     Dim blockRenderer As New MvcContrib.UI.BlockRenderer(controllerContext.HttpContext) 
     Dim s = blockRenderer.Capture(New Action(Function() renderPartialLambda(h, userControl, viewData))) 

     Return s 

End Function 





Private Shared Function renderPartialLambda(ByVal html As HtmlHelper, ByVal userControl As String, ByVal viewData As Object) 
       RenderPartialExtensions.RenderPartial(html, userControl, viewData) 
       Return Nothing 
End Function