No C # 6, há um novo recurso: seqüências de caracteres interpoladas.
Isso permite que você coloque expressões diretamente no código, em vez de confiar em índices:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Torna-se:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
No entanto, temos muitas seqüências de caracteres em várias linhas usando seqüências textuais (principalmente instruções SQL) como esta:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
A reversão para cadeias regulares parece confusa:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
Como uso as seqüências verbatim e interpoladas juntas?
3
Se é realmente sobre seqüências de caracteres SQL, existe algum motivo para você não estar usando consultas parametrizadas?
—
svick
"temos muitas cadeias de caracteres em várias linhas usando cadeias textuais (principalmente instruções SQL)" parece que você tem várias cadeias de SQL que permitem ataques de injeção de SQL.
—
Cetin Basoz
@ Rick somos, tudo o que a entrada do usuário é parametrizada. No entanto, ainda usamos muito o SQL dinâmico, pois criamos SQL dinamicamente para nossas entidades no código.
—
Keith
@CetinBasoz nós não - toda a entrada do usuário é parametrizada. Existem várias circunstâncias em que você possui SQL dinâmico - por exemplo, LINQ ou qualquer outra estrutura de mapeamento de objetos.
—
Keith