2017-07-15 107 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);