Skip to content

Instantly share code, notes, and snippets.

@thecodejunkie
Created June 7, 2011 09:15

Revisions

  1. thecodejunkie created this gist Jun 7, 2011.
    22 changes: 22 additions & 0 deletions DefaultViewCache.cs
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,22 @@
    public class DefaultViewCache : IViewCache
    {
    private readonly ConcurrentDictionary<ViewLocationResult, object> cache;

    public DefaultViewCache()
    {
    this.cache = new ConcurrentDictionary<ViewLocationResult, object>();
    }

    public TCompiledView GetOrAdd<TCompiledView>(ViewLocationResult viewLocationResult, Func<ViewLocationResult, TCompiledView> valueFactory)
    {
    object result;

    if (!this.cache.TryGetValue(viewLocationResult, out result))
    {
    result = valueFactory.Invoke(viewLocationResult);
    this.cache.GetOrAdd(viewLocationResult, result);
    }

    return (TCompiledView)result;
    }
    }