public void Should_serialize_DateTimeOffset_as_property_when_using_string_formatting2()
        {
            var mapperSettings = new DynamicObjectMapperSettings {
                FormatNativeTypesAsString = true
            };
            var mapper = new DynamicObjectMapper(mapperSettings);

            var dto1       = new DateTimeOffset(2, 1, 2, 10, 0, 0, 300, new TimeSpan(1, 30, 0));
            var dtoDynamic = mapper.MapObject(dto1);
            var dto2       = mapper.Map <DateTimeOffset>(dtoDynamic);

            dto2.ShouldBe(dto1);
        }
        public void Should_serialize_DateTimeOffset_as_property_when_using_string_formatting2()
        {
            Skip.If(this.TestIs <JsonSerializer>(), "DateTimeOffset not supported by JsonSerializer");

            var mapperSettings = new DynamicObjectMapperSettings {
                FormatNativeTypesAsString = true
            };
            var mapper = new DynamicObjectMapper(mapperSettings);

            var dto1       = new DateTimeOffset(2, 1, 2, 10, 0, 0, 300, new TimeSpan(1, 30, 0));
            var dtoDynamic = mapper.MapObject(dto1);
            var dto2       = mapper.Map <DateTimeOffset>(dtoDynamic);

            dto2.ShouldBe(dto1);
        }
        public void Should_map_nullable_sbyte_array_to_string_array_according_to_mapper_settings()
        {
            var obj = CreateObject(new sbyte?[] { 1, null, -128 });

            var mapperSettings = new DynamicObjectMapperSettings {
                FormatNativeTypesAsString = true
            };

            var dynamicObject = new DynamicObjectMapper(mapperSettings).MapObject(obj);

            var items = dynamicObject["Items"];

            var array = items.ShouldBeOfType <string[]>();

            array[0].ShouldBe("1");
            array[1].ShouldBeNull();
            array[2].ShouldBe("-128");
        }
        private TResult Serialize <TResult, TSource>(TSource value, bool setTypeFromGenericArgument = true, bool formatValuesAsStrings = false)
        {
            var settings = new DynamicObjectMapperSettings {
                FormatNativeTypesAsString = formatValuesAsStrings
            };
            var dynamicObject = new DynamicObjectMapper(settings).MapObject(value);

            if (dynamicObject is not null && setTypeFromGenericArgument)
            {
                dynamicObject.Type = new TypeInfo(typeof(TSource), false, false);
            }

            var serializedDynamicObject = _serialize(dynamicObject);

            var resurectedValue = new DynamicObjectMapper().Map <TResult>(serializedDynamicObject);

            return(resurectedValue);
        }