public void CompareRuntime(Object1[] l, Object1[] r) { EqualsMethodGenerator cg = new EqualsMethodGenerator(); var expression = cg.GenerateEqualsMethodExpressionRecurse <Object1>(); Func <Object1, Object1, bool> EqualsMethod = expression.Compile(); Test(l, r, EqualsMethod, "Compile(): "); EqualsMethod = _builder.GetCompiledMethod <Func <Object1, Object1, bool> >(expression); Test(l, r, EqualsMethod, "CompileToMethod(): "); }
private static void TestEqualsMethodGenerator() { EqualsMethodGenerator cg = new EqualsMethodGenerator(); Expression <Func <Object1, Object1, bool> > expression = cg.GenerateEqualsMethodExpressionRecurse <Object1>(); Func <Object1, Object1, bool> EqualsMethod = expression.Compile(); Object1 oL = new Object1(3, "string value"); Object1 oR = new Object1(3, "string value"); Console.WriteLine("Should be true:\n\r"); Console.WriteLine("oL.Equals(oR): " + oL.Equals(oR)); Console.WriteLine("oL == oR: " + (oL == oR)); Console.WriteLine("equalMethod(oL, oR): " + EqualsMethod(oL, oR)); oL = new Object1(3, "string value L"); oR = new Object1(3, "string value R"); Console.WriteLine("\n\rShould be false:\n\r"); Console.WriteLine("oL.Equals(oR): " + oL.Equals(oR)); Console.WriteLine("oL == oR: " + (oL == oR)); Console.WriteLine("equalMethod(oL, oR): " + EqualsMethod(oL, oR)); }