Example #1
0
        public ViewModel LookupOrCreate(object key, Func <ViewModel> create)
        {
            if (key == null)
            {
                throw new ArgumentNullException("key");
            }
            if (create == null)
            {
                throw new ArgumentNullException("create");
            }

            _perfCounter.IncrementViewModelFetch();

            var result = _cache.ContainsKey(key) ? _cache[key] : null;

            if (result != null)
            {
                return(result);
            }

            _perfCounter.IncrementViewModelCreate();
            result      = create();
            _cache[key] = result;
            return(result);
        }