2017-07-15 37 views
1

我喜歡C#的新內插語法。C#字符串插值<appSettings>

我想在我的.config文件中的appSettings下存儲一個動態字符串並在其上應用插值。 interpolatedMessage的期望值是"Your User Name is SnowWhite"

如果可能,這將是很好的。 這將幫助我保持密鑰可配置爲任意組合。 (例如,「雪白是用戶名」,「用戶名 - 雪白」)

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

enter image description here

回答

1

插值字符串轉換在編譯時string.Format等效。所以上述不會工作,因爲在運行時間檢索到字符串。

2

這不能使用內插字符串來完成。插值字符串中使用的變量在編譯時應該是已知的。但是,你可以達到你想要使用string.Format

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

,改變消息的值設置爲以下之一:

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

您不能在這種情況下使用插值爲他人提及。但是這個怎麼樣?

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

字符串插值是一種編譯爲字符串格式的語法糖它意味着它需要在編譯時知道所有細節。在你的情況,你只知道在運行時的字符串,因此你需要使用string format

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

代碼:

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