Ejemplo n.º 1
0
        static bool TryGetConvertibleValue(object value, Type destinationType, out ConvertibleValue convertibleValue)
        {
            // Parameter name "noCustomTypeDesc" is correct but documentation is wrong (see http://msdn.microsoft.com/en-us/library/vstudio/y7wd3zkh%28v=vs.90%29.aspx)

            var sourceTypeConverter = TypeDescriptor.GetConverter(value, noCustomTypeDesc: false);

            if (sourceTypeConverter != null && sourceTypeConverter.CanConvertTo(destinationType))
            {
                convertibleValue = new ConvertibleValueFromSourceType(value, destinationType, sourceTypeConverter);
            }
            else
            {
                var destinationTypeConverter = TypeDescriptor.GetConverter(destinationType);

                if (destinationTypeConverter.CanConvertFrom(value.GetType()))
                {
                    convertibleValue = new ConvertibleValueFromDestinationType(value, destinationTypeConverter);
                }
                else
                {
                    convertibleValue = null;
                }
            }

            return(convertibleValue != null);
        }
Ejemplo n.º 2
0
        public void ReadRow_AutoMappedIConvertible_Success()
        {
            using (var importer = Helpers.GetImporter("Strings.xlsx"))
            {
                ExcelSheet sheet = importer.ReadSheet();
                sheet.ReadHeading();

                // Valid value
                ConvertibleValue row1 = sheet.ReadRow <ConvertibleValue>();
                Assert.Equal("value", row1.Value);

                // Valid value
                ConvertibleValue row2 = sheet.ReadRow <ConvertibleValue>();
                Assert.Equal("  value  ", row2.Value);

                // Empty value
                ConvertibleValue row3 = sheet.ReadRow <ConvertibleValue>();
                Assert.Null(row3.Value);
            }
        }
Ejemplo n.º 3
0
        public void ReadRow_CustomMappedIConvertible_Success()
        {
            using (var importer = Helpers.GetImporter("Strings.xlsx"))
            {
                importer.Configuration.RegisterClassMap <ConvertibleValueFallbackMap>();

                ExcelSheet sheet = importer.ReadSheet();
                sheet.ReadHeading();

                // Valid value
                ConvertibleValue row1 = sheet.ReadRow <ConvertibleValue>();
                Assert.Equal("value", row1.Value);

                // Valid value
                ConvertibleValue row2 = sheet.ReadRow <ConvertibleValue>();
                Assert.Equal("  value  ", row2.Value);

                // Empty value
                ConvertibleValue row3 = sheet.ReadRow <ConvertibleValue>();
                Assert.Equal("empty", row3.Value);
            }
        }
Ejemplo n.º 4
0
        public void IntIsConvertibleToString()
        {
            var value = new ConvertibleValue<int>(20);

            Assert.AreEqual("20", value.ConvertTo<string>());
        }
Ejemplo n.º 5
0
        public void DoubleIsConvertibleToInt()
        {
            var value = new ConvertibleValue<double>(1.38);

            Assert.AreEqual(1, value.ConvertTo<int>());
        }
Ejemplo n.º 6
0
        public void DecimalIsConvertibleToString()
        {
            var value = new ConvertibleValue<decimal>(20);

            Assert.AreEqual("20", value.ConvertTo<string>());
        }