2017-07-15 18 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の同等にコンパイル時に変換されます - (例えば、 "SNOWWHITEユーザー名" "SNOWWHITEは、ユーザー名です")。文字列が実行時間で取得されるので、上記のように動作しません。

2

これは、補間された文字列を使用して行うことはできません。補間された文字列で使用される変数は、コンパイル時に認識される必要があります。

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

他の人が述べたようにあなたは、この場合の補間を使用することはできません。しかし、あなたは、

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

string.Formatを使用して、次のいずれかにメッセージの値を変更したいことを達成できます。しかし、これはどうですか?

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);