Я пытаюсь определить равенство двух предикатов:
public T FirstOrDefault(Func<T, bool> predicate)
{
if (EntityCache.ContainsKey(predicate.GetHashCode()))
return EntityCache[predicate.GetHashCode()];
else
{
var entity = _objectSet.FirstOrDefault<T>(predicate);
EntityCache.Add(predicate.GetHashCode(), entity);
return entity;
}
}
Проблема, с которой я столкнулся, состоит в том, что хеш-код предиката не учитывает значения, используемые внутри него, и я не уверен, как их получить.
Если, например, предикат, переданный нашему методу выше: (r => r.Id == id), как мне найти значение 'id' внутри моего метода FirstOrDefault?