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(): ");
        }
示例#2
0
        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));
        }