Пример #1
0
        public static T Get <T>(string key)
        {
            var val = HttpRuntime.Cache[key];

            return(ConvertExt.ChangeType <T>(val));
        }
Пример #2
0
        public void TestChangeType()
        {
            TestImplicitChangeTypeHelper(ConvertExt.ChangeType);

            #region 6.2.1 显式数值转换

            Assert.AreEqual((byte)10, ConvertExt.ChangeType((sbyte)10, typeof(byte)));
            Assert.AreEqual((ushort)11, ConvertExt.ChangeType((sbyte)11, typeof(ushort)));
            Assert.AreEqual((uint)12, ConvertExt.ChangeType((sbyte)12, typeof(uint)));
            Assert.AreEqual((ulong)13, ConvertExt.ChangeType((sbyte)13, typeof(ulong)));
            Assert.AreEqual((char)14, ConvertExt.ChangeType((sbyte)14, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((byte)10, typeof(sbyte)));
            Assert.AreEqual((char)11, ConvertExt.ChangeType((byte)11, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((short)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((short)11, typeof(byte)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((short)13, typeof(ushort)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((short)15, typeof(uint)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((short)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((short)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((ushort)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((ushort)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((ushort)12, typeof(short)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((ushort)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((int)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((int)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((int)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((int)13, typeof(ushort)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((int)15, typeof(uint)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((int)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((int)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((uint)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((uint)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((uint)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((uint)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((uint)14, typeof(int)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((uint)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((long)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((long)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((long)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((long)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((long)14, typeof(int)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((long)15, typeof(uint)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((long)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((long)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((ulong)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((ulong)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((ulong)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((ulong)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((ulong)14, typeof(int)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((ulong)15, typeof(uint)));
            Assert.AreEqual((long)16, ConvertExt.ChangeType((ulong)16, typeof(long)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((ulong)18, typeof(char)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((char)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((char)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((char)12, typeof(short)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((float)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((float)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((float)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((float)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((float)14, typeof(int)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((float)15, typeof(uint)));
            Assert.AreEqual((long)16, ConvertExt.ChangeType((float)16, typeof(long)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((float)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((float)18, typeof(char)));
            Assert.AreEqual((decimal)21, ConvertExt.ChangeType((float)21, typeof(decimal)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((double)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((double)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((double)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((double)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((double)14, typeof(int)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((double)15, typeof(uint)));
            Assert.AreEqual((long)16, ConvertExt.ChangeType((double)16, typeof(long)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((double)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((double)18, typeof(char)));
            Assert.AreEqual((float)19, ConvertExt.ChangeType((double)19, typeof(float)));
            Assert.AreEqual((decimal)21, ConvertExt.ChangeType((double)21, typeof(decimal)));
            Assert.AreEqual((sbyte)10, ConvertExt.ChangeType((decimal)10, typeof(sbyte)));
            Assert.AreEqual((byte)11, ConvertExt.ChangeType((decimal)11, typeof(byte)));
            Assert.AreEqual((short)12, ConvertExt.ChangeType((decimal)12, typeof(short)));
            Assert.AreEqual((ushort)13, ConvertExt.ChangeType((decimal)13, typeof(ushort)));
            Assert.AreEqual((int)14, ConvertExt.ChangeType((decimal)14, typeof(int)));
            Assert.AreEqual((uint)15, ConvertExt.ChangeType((decimal)15, typeof(uint)));
            Assert.AreEqual((long)16, ConvertExt.ChangeType((decimal)16, typeof(long)));
            Assert.AreEqual((ulong)17, ConvertExt.ChangeType((decimal)17, typeof(ulong)));
            Assert.AreEqual((char)18, ConvertExt.ChangeType((decimal)18, typeof(char)));
            Assert.AreEqual((float)19, ConvertExt.ChangeType((decimal)19, typeof(float)));
            Assert.AreEqual((double)20, ConvertExt.ChangeType((decimal)20, typeof(double)));

            #endregion             // 6.2.1 显式数值转换

            #region 6.2.2 显式枚举转换

            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((sbyte)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((byte)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((short)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((ushort)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((int)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((uint)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((long)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((ulong)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((char)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((float)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((double)1, typeof(Tristate)));
            Assert.AreEqual(Tristate.True, ConvertExt.ChangeType((decimal)1, typeof(Tristate)));
            Assert.AreEqual((sbyte)1, ConvertExt.ChangeType(Tristate.True, typeof(sbyte)));
            Assert.AreEqual((byte)1, ConvertExt.ChangeType(Tristate.True, typeof(byte)));
            Assert.AreEqual((short)1, ConvertExt.ChangeType(Tristate.True, typeof(short)));
            Assert.AreEqual((ushort)1, ConvertExt.ChangeType(Tristate.True, typeof(ushort)));
            Assert.AreEqual((int)1, ConvertExt.ChangeType(Tristate.True, typeof(int)));
            Assert.AreEqual((uint)1, ConvertExt.ChangeType(Tristate.True, typeof(uint)));
            Assert.AreEqual((long)1, ConvertExt.ChangeType(Tristate.True, typeof(long)));
            Assert.AreEqual((ulong)1, ConvertExt.ChangeType(Tristate.True, typeof(ulong)));
            Assert.AreEqual((char)1, ConvertExt.ChangeType(Tristate.True, typeof(char)));
            Assert.AreEqual((float)1, ConvertExt.ChangeType(Tristate.True, typeof(float)));
            Assert.AreEqual((double)1, ConvertExt.ChangeType(Tristate.True, typeof(double)));
            Assert.AreEqual((decimal)1, ConvertExt.ChangeType(Tristate.True, typeof(decimal)));
            Assert.AreEqual((BindingFlags)1, ConvertExt.ChangeType(Tristate.True, typeof(BindingFlags)));
            Assert.AreEqual((Tristate)1, ConvertExt.ChangeType((BindingFlags)1, typeof(Tristate)));

            #endregion             // 6.2.2 显式枚举转换

            #region 6.2.3 可以为 null 的显式转换

            // 从 S 到 T? 的显式转换。
            Assert.AreEqual((int?)10, ConvertExt.ChangeType((long)10, typeof(int?)));
            // 从 S? 到 T? 的显式转换。
            Assert.AreEqual((int?)10, ConvertExt.ChangeType((long?)10, typeof(int?)));
            Assert.AreEqual((int?)null, ConvertExt.ChangeType((long?)null, typeof(int?)));
            // 从 S? 到 T 的显式转换。
            Assert.AreEqual(10, ConvertExt.ChangeType((long?)10, typeof(int)));

            #endregion             // 6.2.3 可以为 null 的显式转换
        }