public static T Get <T>(string key) { var val = HttpRuntime.Cache[key]; return(ConvertExt.ChangeType <T>(val)); }
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 的显式转换 }