Я сейчас пишу расширение заменить нормальный string.Format
с моим FormatNamed
-функцией.Метод расширения с динамическими именованными параметрами
До сих пор я получил этот код, но я хочу, чтобы изменить способ ввода параметров
void Main()
{
string sql = "SELECT {fields} FROM {table} WHERE {query}"
.FormatNamed(new { fields = "test", table = "testTable", query = "1 = 1" });
Console.WriteLine(sql);
}
public static class StringExtensions
{
public static string FormatNamed(this string formatString, dynamic parameters)
{
var t = parameters.GetType();
var tmpVal = formatString;
foreach(var p in t.GetProperties())
{
tmpVal = tmpVal.Replace("{" + p.Name + "}", p.GetValue(parameters));
}
return tmpVal;
}
}
Не самая красивая из Заменяет, но это делает работу.
В любом случае. Я хочу изменить его, чтобы выполнить его с помощью
.FormatName(field: "test", table: "testTable", query: "1 = 1");
Есть ли способ, которым я могу это сделать? Я пробовал поиск по динамическим именованным параметрам без каких-либо хороших результатов.
Используйте sql-параметры для параметризации ваших запросов sql, не форматируйте строку sql самостоятельно, объединяя все поля и значения вместе. Вы открыты для атак sql-injectionn. –
@TimSchmelter У нас есть код для дезинфекции SQL, но я не включил их здесь, мне просто нужна строка-пример. И SQL был первым, о котором я мог думать. :) – NoLifeKing
Да, должно быть, с переводом. ^^ 'string phrase =" {item} будет стоить около {cost} в {storeName} -store ".Forma ...' – NoLifeKing