首页 > 解决方案 > 编译器如何处理字符串插值

问题描述

我正在将字符串插值用于方法属性,例如 -

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

即使我","','它替换也会出现同样的错误。

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

标签: c#string-interpolation

解决方案


字符串插值转换string.Format为不是编译时间常数,因为它需要请查看此问题以获取更多信息


推荐阅读