Обычно в моих репозиториях есть операторы регистрации для целей отладки, позволяющие мне видеть значения параметров. Недавно я пошел по пути создания универсального репозитория, который принимает выражение предиката в качестве аргумента для большой гибкости, однако я не могу придумать достойный способ записать условие в журнал, где это было бы удаленно полезно.
Пример метода:
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 () на этом этапе, но результаты не очень удобочитаемы:
Параметры [предикат: (fa.SomeId == value (NameSpace.SomeClass + <> c__DisplayClass2) .SomeId )]
В конечном итоге я бы хотел увидеть нечто похожее на приведенное ниже:
Параметры [предикат: (fa.SomeId == 1 && fa.Account.Name == "MyName").
Есть ли какой-нибудь способ обойти это ограничение, заставляющее пользователя API предоставлять предикат в виде строки?