2017-07-15 4 views
1

Ich mag die neue Interpolationssyntax von C#.C# String Interpolation auf <appSettings>

Ich möchte eine dynamische Zeichenfolge in meiner .config-Datei unter appSettings speichern und Interpolation darauf anwenden. Der erwartete Wert von interpolatedMessage ist "Your User Name is SnowWhite"

Es wäre großartig, wenn dies möglich ist. Dies wird mir helfen, den Schlüssel auf jede Kombination konfigurierbar zu halten. (Zum Beispiel "Snowwhite ist Ihr Benutzername", "User Name - Snowwhite")

<appSettings> 
    <add key="userNameKey" value="Your User Name is {userName}" /> 
    </appSettings> 

enter image description here

Antwort

1

Interpolated Saiten in das Äquivalent von string.Format bei Kompilierung umgewandelt werden. Das obige funktioniert nicht, da die Zeichenfolge unter Laufzeit abgerufen wird.

2

Dies kann nicht mit interpolierten Strings durchgeführt werden. Die in einer interpolierten Zeichenfolge verwendeten Variablen sollten zum Zeitpunkt der Kompilierung bekannt sein. Allerdings könnte man erreichen, dass Sie string.Format verwenden möchten,

var result = string.Format(message, userName); 

und ändert den Wert der Nachricht an die folgende:

<add key="userNameKey" value="Your User Name is {0}" /> 
0

Sie nicht Interpolation in diesem Fall verwenden können, wie andere erwähnt. Aber was ist damit?

string userName = "SnowWhite"; 
var message = ConfigurationManager.AppSettings["userNameKey"]; 
message = message.Replace("{userName}", userName); 
3

String-Interpolation ist eine Syntax Zucker, die zu String-Format kompiliert Es bedeutet, dass es alle Details zur Kompilierzeit wissen muss. In Ihrem Fall wissen Sie, nur die Zeichenfolgen in der Laufzeit und somit müssen Sie verwenden string format:

<appSettings> 
    <add key="userNameKey" value="Your User Name is {0}" /> 
</appSettings> 

Code:

var message = string.Format(ConfigurationManager["userNameKey"], userName);