En C # 6 hay una nueva característica: cadenas interpoladas.
Estos le permiten poner expresiones directamente en el código, en lugar de depender de índices:
string s = string.Format("Adding \"{0}\" and {1} to foobar.", x, this.Y());
Se convierte en:
string s = $"Adding \"{x}\" and {this.Y()} to foobar.";
Sin embargo, tenemos muchas cadenas a través de varias líneas usando cadenas literales (principalmente sentencias SQL) como esta:
string s = string.Format(@"Result...
Adding ""{0}"" and {1} to foobar:
{2}", x, this.Y(), x.GetLog());
Revertir estos a cadenas regulares parece desordenado:
string s = "Result...\r\n" +
$"Adding \"{x}\" and {this.Y()} to foobar:\r\n" +
x.GetLog().ToString();
¿Cómo uso las cadenas textuales e interpoladas juntas?
3
Si realmente se trata de cadenas SQL, ¿hay alguna razón por la que no esté utilizando consultas parametrizadas?
—
svick
"tenemos muchas cadenas a través de varias líneas que usan cadenas literales (principalmente sentencias SQL)" parece que tiene muchas cadenas SQL que permiten ataques de inyección SQL.
—
Cetin Basoz
@svick estamos, todo lo que ingresa el usuario está parametrizado. Sin embargo, todavía utilizamos mucho SQL dinámico, ya que creamos dinámicamente SQL para nuestras entidades en código.
—
Keith
@CetinBasoz no lo hacemos: toda la entrada del usuario está parametrizada. Hay muchas circunstancias en las que tiene SQL dinámico, por ejemplo, LINQ o cualquier otro marco de mapeo de objetos.
—
Keith