public static IndirectComparison Create( EmitterDelegate checkForIntermediateResultEmitter, MethodInfo genericDelayedMethod, IVariable variable) { var variableType = variable.VariableType; var compareMethod = genericDelayedMethod.MakeGenericMethod(variableType); return(new IndirectComparison(checkForIntermediateResultEmitter, compareMethod, variable)); }
private StringsComparison( MethodInfo compareMethod, EmitterDelegate checkForIntermediateResultEmitter, IConfigurationProvider configuration, IVariable variable) { _compareMethod = compareMethod; _checkForIntermediateResultEmitter = checkForIntermediateResultEmitter; _variable = variable; _stringComparisonType = (int)configuration.Get(_variable.OwnerType).StringComparisonType; }
private NullableComparison( IResolver resolver, EmitterDelegate checkForIntermediateResultEmitter, EmitCheckNullablesForValueDelegate emitCheckNullablesForValue, IVariable variable) { _resolver = resolver; _checkForIntermediateResultEmitter = checkForIntermediateResultEmitter; _emitCheckNullablesForValue = emitCheckNullablesForValue; _variable = variable; }
public static StringsComparison Create( MethodInfo compareMethod, EmitterDelegate checkForIntermediateResultEmitter, IConfigurationProvider configuration, IVariable variable) { if (variable.VariableType == typeof(string)) { return(new StringsComparison(compareMethod, checkForIntermediateResultEmitter, configuration, variable)); } return(null); }
public static NullableComparison Create( IResolver resolver, EmitterDelegate checkForIntermediateResultEmitter, EmitCheckNullablesForValueDelegate emitCheckNullablesForValue, IVariable variable) { if (variable.VariableType.IsNullable()) { return(new NullableComparison(resolver, checkForIntermediateResultEmitter, emitCheckNullablesForValue, variable)); } return(null); }
public static IndirectComparison Create( EmitterDelegate checkForIntermediateResultEmitter, Func <Type, MethodInfo> staticMethodFactory, MethodInfo genericDelayedMethod, IVariable variable) { var variableType = variable.VariableType; if (variableType != typeof(object) && variable is ArgumentVariable) { return(null); } var typeOfVariableCanBeChangedOnRuntime = !variableType.IsSealedType(); var compareMethod = typeOfVariableCanBeChangedOnRuntime ? genericDelayedMethod.MakeGenericMethod(variableType) : staticMethodFactory(variableType); return(new IndirectComparison(checkForIntermediateResultEmitter, compareMethod, variable)); }
private IndirectComparison(EmitterDelegate checkForIntermediateResultEmitter, MethodInfo method, IVariable variable) { _checkForIntermediateResultEmitter = checkForIntermediateResultEmitter; _variable = variable; _method = method; }