Обычно в моих репозиториях есть операторы регистрации для целей отладки, что позволяет мне видеть значения параметров.Недавно я пошел по пути создания универсального репозитория, который принимает предикат Expression в качестве аргумента для большой гибкости, однако я не могу найти достойный способ записи условия в то место, где оно будет удаленно полезным.
Пример метода:
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 указывать предикат в виде строки?