private static void Compare(string value1, string value2, ComparisonCallback del) { if (!StringUtils.AreEqual(value1, value2, StringComparison.InvariantCultureIgnoreCase)) { del(true); } else { del(false); } }
private static void Compare(string value1, string value2, ComparisonCallback del) { if (!StringUtils.AreEqual(value1, value2, StringComparison.InvariantCultureIgnoreCase)) del(true); else del(false); }
static DecisionMappingPerfTest() { _lessThanDelegate = LessThan; _lessThanInstanceDelegate = new DecisionMappingPerfTest().LessThanInstance; Expression <ComparisonCallback> expr = (a, b) => a.Value < b.Value; _lessThanExpression = expr.Compile(); var delegateType = typeof(ComparisonCallback); var argType = typeof(Holder <int>); var resultType = typeof(bool); var associatedWithType = typeof(DecisionMappingPerfTest); #region Dynamic method var dynMethod = new DynamicMethod("LessThan", resultType, new[] { argType, argType }); EmitLessThan(dynMethod.GetILGenerator(), false); _lessThanDynamicMethod = (ComparisonCallback)dynMethod.CreateDelegate(delegateType); dynMethod = new DynamicMethod("LessThanAssoc", resultType, new[] { argType, argType }, associatedWithType); EmitLessThan(dynMethod.GetILGenerator(), false); _lessThanDynamicMethodAssociated = (ComparisonCallback)dynMethod.CreateDelegate(delegateType); dynMethod = new DynamicMethod( "LessThanAssocInstance", resultType, new[] { associatedWithType, argType, argType }, associatedWithType); EmitLessThan(dynMethod.GetILGenerator(), true); _lessThanDynamicMethodAssociatedInstance = (ComparisonCallback)dynMethod.CreateDelegate(delegateType, new DecisionMappingPerfTest()); #endregion #region Type builder var ab = AssemblyBuilder.DefineDynamicAssembly(new AssemblyName("OpsHolder"), AssemblyBuilderAccess.RunAndCollect); var mod = ab.DefineDynamicModule("OpsHolder"); var tb = mod.DefineType("OpsHolder" + nameof(Int32)); var mLessThan = tb.DefineMethod( "LessThan", MethodAttributes.Public | MethodAttributes.Static, resultType, new[] { argType, argType }); EmitLessThan(mLessThan.GetILGenerator(), false); var mLessThanInstance = tb.DefineMethod( "LessThanInstance", MethodAttributes.Public, resultType, new[] { argType, argType }); EmitLessThan(mLessThanInstance.GetILGenerator(), true); var mLessThanExpr = tb.DefineMethod( "LessThanExpr", MethodAttributes.Public | MethodAttributes.Static, resultType, new[] { argType, argType }); expr.CompileToMethod(mLessThanExpr); var t2 = tb.CreateType(); var inst = Activator.CreateInstance(t2); _lessThanTypeBuilder = (ComparisonCallback)t2.GetMethod(mLessThan.Name).CreateDelegate(delegateType); _lessThanTypeBuilderInstance = (ComparisonCallback)t2.GetMethod(mLessThanInstance.Name).CreateDelegate(delegateType, inst); _lessThanTbExpression = (ComparisonCallback)t2.GetMethod(mLessThanExpr.Name).CreateDelegate(delegateType); #endregion }