public async Task SameKeyDifferentType()
        {
            var setCat = new Utilities.One.Cat {
                Name = "Linq"
            };
            await CacheRepository.SetByTypeAsync(1, setCat);

            var setDog = new Utilities.One.Dog {
                Name = "Taboo"
            };
            await CacheRepository.SetByTypeAsync(1, setDog);

            var getCat = await CacheRepository.GetByTypeAsync <Utilities.One.Cat>(1);

            Assert.Equal(setCat.Name, getCat.Name);

            var getDog = await CacheRepository.GetByTypeAsync <Utilities.One.Dog>(1);

            Assert.Equal(setDog.Name, getDog.Name);

            Assert.Equal(2, MemoryCacheRepository.Map.Count);
        }
        public async Task DerivedTypeSameKey()
        {
            var setDogA = new Utilities.One.Dog {
                Name = "Taboo"
            };
            await CacheRepository.SetByTypeAsync(1, setDogA);

            var setDogB = new Utilities.Two.Dog {
                Name = "Jay"
            };
            await CacheRepository.SetByTypeAsync(1, setDogB);

            var getDogA = await CacheRepository.GetByTypeAsync <Utilities.One.Dog>(1);

            Assert.Equal(setDogA.Name, getDogA.Name);

            var getDogB = await CacheRepository.GetByTypeAsync <Utilities.Two.Dog>(1);

            Assert.Equal(setDogB.Name, getDogB.Name);

            Assert.Equal(2, MemoryCacheRepository.Map.Count);
        }