Ich habe eine Funktion, die wie folgt einen Text aus einer XML-Datei erhält:String Interpolation auf dem Ergebnis einer Funktion, die Zeichenfolge zurückgibt
var text = Translate("/foo/bar");
nun in der XML-I wie dies in String Interpolationskonstanten setzen will :
<foo>
<bar>Hi, {firstName} {lastName}!</bar>
</foo>
würde, dass Deshalb möchte ich String Interpolation auf das Ergebnis der Übersetzen-Funktion zu tun, so etwas wie:
var firstName = "John";
var lastName = "Smith";
var formattedText = $Translate("/foo/bar");
Aber das scheint nicht zu funktionieren. Gibt es einen Weg dazu, außer zu string.Format zurückzukehren?
Es könnte nett sein, wenn das Dollarzeichen vor irgendetwas platziert werden könnte, das eine Zeichenkette ist, sei es eine Variable, eine Zeichenkette oder eine Funktion, um eine Zeichenketteninterpolation durchzuführen.
Es ist erwähnenswert, dass ich keine Kontrolle über den Code für die Translate-Funktion habe, da es in einer Drittanbieter-Komponente ist.
Es gibt einige Utility-Klassen für diese Art von Dingen geschrieben (z., [FormatWith] (http://james.newtonking.com/archive/2008/03/29/formatwith-2-0-string-formatting-with-named-variables)). Sie neigen jedoch dazu, undokumentierte Idiosynkrasien zu haben. Dies opfert zwar den Schutz des Typsystems, aber das ist ein Nachteil der Formatierung von Laufzeitzeichenfolgen. – Brian