Си диез / Говнокод #24899 Ссылка на оригинал

0

  1. 1
  2. 2
  3. 3
  4. 4
  5. 5
  6. 6
  7. 7
  8. 8
  9. 9
private static readonly ConcurrentDictionary<Expression, object> CachedFunctions;

public static Func<TEntity, bool> AsFunc<TEntity>(this object entity, Expression<Func<TEntity, bool>> expr)
    where TEntity : class, IEntity
{
    //@see http://sergeyteplyakov.blogspot.ru/2015/06/lazy-trick-with-concurrentdictionary.html
    return (Func<TEntity, bool>)CachedFunctions.GetOrAdd(expr, id => new Lazy<object>(
        () => CachedFunctions.GetOrAdd(id, expr.Compile())));
}

Вот так хорошая идея ломается о кривую реализацию. Вместо того чтобы сохранить в кэш требуемый тип, сохраняем туда Lazy, возвращающий себя же :)

Запостил: leff leff, (Updated )

Комментарии (4) RSS

Добавить комментарий

Я, guest, находясь в здравом уме и твердой памяти, торжественно заявляю:

    А не использовать ли нам bbcode?


    8