private ITypeMapper <T> CreateMapper <T>(MapperKey key)
        {
            if (!profiledMappingFactories.TryGetValue(key, out var mappingFactory))
            {
                throw new ByteMapperException($"Mapper entry is not exist. type=[{key.Type.FullName}], profile=[{key.Profile}]");
            }

            var mapping = mappingFactory.Create(Components, parameters);

            return(new TypeMapper <T>(mapping.Type, mapping.Size, mapping.Filler, mapping.Mappers));
        }
        private ITypeMapper <T> CreateInternalWithProfile <T>(string profile)
        {
            var type = typeof(T);
            var key  = new MapperKey(type, profile);

            if (!profiledCache.TryGetValue(key, out var mapper))
            {
                mapper = profiledCache.AddIfNotExist(key, CreateMapper <T>);
            }

            return((ITypeMapper <T>)mapper);
        }
Exemplo n.º 3
0
        public void MapKeyCompare()
        {
            var key1  = new MapperKey(typeof(object), string.Empty);
            var key1B = key1;

            // Compare to null
            Assert.False(key1.Equals(null));

            // Compare to self
            Assert.True(key1.Equals(key1B));

            // Compare to same
            Assert.True(key1.Equals(new MapperKey(typeof(object), string.Empty)));

            // Compare to different type
            Assert.False(key1.Equals(new MapperKey(typeof(string), string.Empty)));

            // Compare to different name
            Assert.False(key1.Equals(new MapperKey(typeof(object), "x")));

            // Compare to another type
            Assert.False(key1.Equals(new object()));
        }