Petite aventure du matin avec System.Text.StringBuilder.AppendFormat !!

Voici ce que j'essayai de mettre en place ce matin :

Public Function GetJsOnLoad(ByVal _jsFunctionName As String) As String
    Return String.Format("window.onload = function( e ) { oldOnload( e ); {0}(); }" & vbCrLf, _jsFunctionName)
End Function

Tout me semblait normal jusqu'à ce que j'execute ma page et que je recupère une belle exception :
System.FormatException: Le format de la chaîne d'entrée est incorrect.

Etrange ... Me voici parti dans le MSDN pour trouver de l'info sur les formats de chaîne car je me doute que j'ai un soucis avec mes {}.
Ne trouvant pas d'info, je regarde String.Format via Reflector qui me ramène à System.Text.StringBuilder.AppendFormat où je découvre un parser avec ce bout de code :

If (ch1 = "{") Then
    If ((num1 < num2) AndAlso (chArray1(num1) = "{")) Then
        num1 += 1
    Else
        num1 -= 1
        Exit Do
    End If
End If

Il suffit donc des doubler les caractères { et } lorsqu'il ne sont pas utilisé pour le formattage :

Public Function GetJsOnLoad(ByVal _jsFunctionName As String) As String
    Return String.Format("window.onload = function( e ) {{ oldOnload( e ); {0}(); }}" & vbCrLf, _jsFunctionName)
End Function

Aurelien
Member Of WygTeam