通常,我的存储库具有用于调试目的的日志记录语句,允许我查看参数值。最近,我走上了创建一个通用存储库的道路,该存储库将谓词表达式作为参数以获得极大的灵活性,但是我无法找到一种体面的方法将条件记录到远程有用的地方。
示例方法:
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 的用户将谓词作为字符串提供?