現在、通常の機能を -function に置き換える拡張機能を作成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");
これを行う方法はありますか?動的な名前付きパラメーターをグーグルで検索してみましたが、良い結果は得られませんでした。