编译器如何处理字符串插值

时间:2019-02-18 05:00:45

标签: c# string-interpolation

我正在将字符串插值用于--p这样的方法属性

const string User = "SomeUser";
const string Admin = "Admin";
.
.
.
[Authorize(Roles = $"{User},{Admin}")]
public IHttpActionResult Get()

但是Visual Studio给出了错误-

  

属性参数必须是常量表达式,typeof表达式   参数类型的数组或数组创建表达式

当我尝试使用“ +”进行字符串连接时

[Authorize(Roles = User + "," + Admin)]
public IHttpActionResult Get()

即使我将","替换为',',也会产生相同的错误。

我想知道编译器如何处理字符串插值吗?

1 个答案:

答案 0 :(得分:1)

字符串插值将转换为string.Format,这不是所需的编译时间常数 请查看this question以获取更多信息