public static IValueConverter <T> Resolve(Type converterType)
    {
        Type key = converterType ?? typeof(T);

        if (!_cachedConverters.TryGetValue(key, out var converter))
        {
            lock (_cachedConverters)
            {
                if (!_cachedConverters.TryGetValue(key, out converter))
                {
                    if (converterType == null)
                    {
                        if (typeof(T) == typeof(string))
                        {
                            converter = (IValueConverter <T>) new StringConverter();
                        }
                        else
                        {
                            converter = new ParseConverter <T>();
                        }

                        _cachedConverters[typeof(T)] = converter;
                    }
                    else
                    {
                        converter = (IValueConverter <T>)Activator.CreateInstance(converterType);
                        _cachedConverters[converterType] = converter;
                    }
                }
            }
        }

        return(converter);
    }
Example #2
0
        public void TryCreateReturnsInstanceForNullableType()
        {
            ParseConverter <byte> .TryCreate(out _).ShouldBeTrue();

            ParseConverter <short> .TryCreate(out _).ShouldBeTrue();

            ParseConverter <int> .TryCreate(out _).ShouldBeTrue();

            ParseConverter <long> .TryCreate(out _).ShouldBeTrue();

            ParseConverter <float> .TryCreate(out _).ShouldBeTrue();

            ParseConverter <double> .TryCreate(out _).ShouldBeTrue();

            ParseConverter <decimal> .TryCreate(out _).ShouldBeTrue();

            ParseConverter <DateTime> .TryCreate(out _).ShouldBeTrue();

            ParseConverter <TimeSpan> .TryCreate(out _).ShouldBeTrue();
        }
Example #3
0
        public void Test___Method_Convert___DateTime()
        {
            var testee = new ParseConverter <DateTime>();

            Assert.AreEqual(DateTime.MinValue, testee.Convert("0001-01-01 00:00:00"));
        }
Example #4
0
        public void Test___Method_Convert___Guid()
        {
            var testee = new ParseConverter <Guid>();

            Assert.AreEqual(Guid.Empty, testee.Convert("00000000-0000-0000-0000-000000000000"));
        }
Example #5
0
        public void Test___Method_Convert___ushort()
        {
            var testee = new ParseConverter <ushort>();

            Assert.AreEqual((ushort)1, testee.Convert("1"));
        }
Example #6
0
        public void Test___Method_Convert___byte()
        {
            var testee = new ParseConverter <byte>();

            Assert.AreEqual((byte)1, testee.Convert("1"));
        }
Example #7
0
        public void Test___Method_Convert___char()
        {
            var testee = new ParseConverter <char>();

            Assert.AreEqual(0x20, testee.Convert(" "));
        }
Example #8
0
        public void Test___Method_Convert___bool()
        {
            var testee = new ParseConverter <bool>();

            Assert.AreEqual(true, testee.Convert("true"));
        }