通常、私のリポジトリにはデバッグ目的のロギングステートメントがあり、パラメータの値を確認できます。最近、柔軟性を高めるために述語式を引数として取る汎用リポジトリを作成する道を歩みましたが、リモートで役立つ場所に条件を記録する適切な方法を理解できません。
方法の例:
public int GetCount<K>(Expression<Func<K, bool>> predicate) where K : class
{
Logger.LogDebugMessage(String.Format("Parameters [predicate: {0}]", predicate == null ? string.Empty : predicate.Body.ToString()));
...
}
この時点でBody.ToString()を使用していることがわかりますが、結果はそれほど読みやすくありません。
Parameters [predicate: (fa.SomeId == value(NameSpace.SomeClass+<>c__DisplayClass2).SomeId)]
最終的に私が見たいのは、以下のようなものです。
Parameters [predicate: (fa.SomeId == 1 && fa.Account.Name == "MyName").SomeId)]
本質的に、このログの値は、何かが爆発したときに入力値を知ることができるということです。APIのユーザーに述語を文字列として提供するように強制するこの不足を回避する方法はありますか?