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); }
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())); }