c# - 编译器如何处理字符串插值
问题描述
我正在将字符串插值用于方法属性,例如 -
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()
即使我","
用','
它替换也会出现同样的错误。
我想知道编译器如何处理字符串插值?
解决方案
字符串插值转换string.Format
为不是编译时间常数,因为它需要请查看此问题以获取更多信息
推荐阅读
- c# - 如何创建具有泛型类型的类
- xsd - XSD 元素如何组合成 xsd:extension 模式
- reactjs - TS React prop 作为对象数组中的动态键
- sql - 解决 SQL Server 耗时较长的问题
- reactjs - 段落的 getByRole 查询在 React 测试期间不起作用
- reactjs - 升级到 Chrome 87 后,React 源代码不再显示在 DevTools 中
- apache - 使用 mod_auth_openidc 连接到具有相同提供程序的多个客户端
- php - 在 Google 图表中获取实时提要
- android - lateinit 属性 appContext 尚未初始化
- github - 官方 GitHub 识别算法