示例#1
0
        public void Should_add_item_to_cache_when_context_exists()
        {
            SetupContext();

            sut.Add("Key", 1);

            var found = sut.TryGetValue("Key", out var value);

            Assert.True(found);
            Assert.Equal(1, value);

            sut.Remove("Key");

            var foundAfterRemove = sut.TryGetValue("Key", out value);

            Assert.False(foundAfterRemove);
            Assert.Null(value);
        }
示例#2
0
        public static T GetOrCreate <T>(this IRequestCache cache, object key, Func <T> task)
        {
            if (cache.TryGetValue(key, out var value) && value is T typedValue)
            {
                return(typedValue);
            }

            typedValue = task();

            cache.Add(key, typedValue);

            return(typedValue);
        }
示例#3
0
        public Task <AccountDetail?> GetDetailAsync(string?accountId)
        {
            return(DataSvcInvoker.Current.InvokeAsync(this, async() =>
            {
                var __key = new UniqueKey(accountId);
                if (_cache.TryGetValue(__key, out AccountDetail? __val))
                {
                    return __val;
                }

                var __result = await _data.GetDetailAsync(accountId).ConfigureAwait(false);
                _cache.SetValue(__key, __result);
                return __result;
            }));
        public Task <TripPerson?> GetAsync(string?id)
        {
            return(DataSvcInvoker.Current.InvokeAsync(this, async() =>
            {
                var __key = new UniqueKey(id);
                if (_cache.TryGetValue(__key, out TripPerson? __val))
                {
                    return __val;
                }

                var __result = await _data.GetAsync(id).ConfigureAwait(false);
                _cache.SetValue(__key, __result);
                return __result;
            }));
示例#5
0
        public Task <Contact?> GetAsync(Guid id)
        {
            return(DataSvcInvoker.Current.InvokeAsync(typeof(ContactDataSvc), async() =>
            {
                var __key = new UniqueKey(id);
                if (_cache.TryGetValue(__key, out Contact __val))
                {
                    return __val;
                }

                var __result = await _data.GetAsync(id).ConfigureAwait(false);
                _cache.SetValue(__key, __result !);
                return __result;
            }));
示例#6
0
        public Task <PerformanceReview?> GetAsync(Guid id)
        {
            return(DataSvcInvoker.Current.InvokeAsync(this, async() =>
            {
                var __key = new UniqueKey(id);
                if (_cache.TryGetValue(__key, out PerformanceReview? __val))
                {
                    return __val;
                }

                var __result = await _data.GetAsync(id).ConfigureAwait(false);
                _cache.SetValue(__key, __result);
                return __result;
            }));
示例#7
0
        public Task <Person?> GetAsync(Guid id)
        {
            return(DataSvcInvoker.Current.InvokeAsync(this, async() =>
            {
                var __key = new UniqueKey(id);
                if (_cache.TryGetValue(__key, out Person? __val))
                {
                    return __val;
                }

                var __result = await _data.GetAsync(id).ConfigureAwait(false);
                _cache.SetValue(__key, __result);
                if (_getOnAfterAsync != null)
                {
                    await _getOnAfterAsync(__result, id).ConfigureAwait(false);
                }
                return __result;
            }));