Как компилятор обрабатывает интерполяцию строк - PullRequest
0 голосов
/ 18 февраля 2019

Я использую строковую интерполяцию для атрибута метода, например -

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 голосов
/ 18 февраля 2019

строковая интерполяция преобразуется в string.Format, который не является постоянной времени компиляции, поскольку требует любезного просмотра этот вопрос для получения дополнительной информации

...