返回字符串的函数结果的字符串插值

Sve*_*aup 1 c# string-interpolation

我有一个函数从xml文件中获取一些文本,如下所示:

var text = Translate("/foo/bar");
Run Code Online (Sandbox Code Playgroud)

现在在XML中我想放入这样的字符串插值常量:

<foo>
  <bar>Hi, {firstName} {lastName}!</bar>
</foo>
Run Code Online (Sandbox Code Playgroud)

所以,我想对Translate函数的结果进行字符串插值,这类似于:

var firstName = "John";
var lastName = "Smith";
var formattedText = $Translate("/foo/bar");
Run Code Online (Sandbox Code Playgroud)

但这似乎不起作用.有没有办法解决这个问题,除了恢复到string.Format?

如果美元符号可以放在任何字符串的前面,无论是变量,字符串还是函数,都可以很好地进行字符串插值.

值得一提的是,我无法控制Translate函数的代码,因为它位于第三方组件中.

Jon*_*eet 8

不,你不能这样做.字符串插值在编译时执行.编译器检查插值的字符串文字,找到相关的格式字符串并将它们转换为{0}等等.在执行时没有类似的执行此操作.