【发布时间】:2016-09-15 17:30:05
【问题描述】:
我有一个函数可以从这样的 xml 文件中获取一些文本:
var text = Translate("/foo/bar");
现在我想在 XML 中放入这样的字符串插值常量:
<foo>
<bar>Hi, {firstName} {lastName}!</bar>
</foo>
所以,我想对翻译函数的结果进行字符串插值,类似于:
var firstName = "John";
var lastName = "Smith";
var formattedText = $Translate("/foo/bar");
但这似乎不起作用。 有什么办法可以解决这个问题,除了恢复为 string.Format 吗?
如果美元符号可以放在任何字符串的前面,无论是变量、字符串还是函数,都可以进行字符串插值。
值得一提的是,我无法控制翻译功能的代码,因为它位于第三方组件中。
【问题讨论】:
-
有一些实用程序类是为这类事情编写的(例如,FormatWith)。然而,他们往往有无证的特质。这确实牺牲了对类型系统的保护,但这是运行时字符串格式化的固有缺点。