为什么这个测试失败了?
[Test]
public void Int64Test()
{
Int64Keys ObjBigInt = new Int64Keys();
ObjBigInt.Id = 0;
PropertyInfo p = ObjBigInt.GetType().GetProperty("Id");
var IDValue = p.GetValue(ObjBigInt, null);
//var IDType = IDValue.GetType(); //returns {System.Int64}
Assert.IsTrue(IDValue.Equals(0)); //is returning false and the type if IDValue is Int64()
}
public class Int64Keys
{
public Int64 Id { get; set; }
}
public class Int32Keys
{
public Int32 Id { get; set; }
}
public class DoubleKeys
{
public double Id { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
我提到了这个问题,但没有足够的想法来解决这个问题.
编辑:我正在使用Repository模式,所以我的实例可以是任何类型(Int32,Int64,double).
你正在比较盒装long和int.盒装基元将与任何不完全属于其自身类型的对象进行比较.改变这一行:
Assert.IsTrue(IDValue.Equals(0));
Run Code Online (Sandbox Code Playgroud)
对此:
Assert.IsTrue(IDValue.Equals(0L));
Run Code Online (Sandbox Code Playgroud)