private EnumerablesComparison( IResolver resolver, ArrayComparisonEmitter arrayComparisonEmitter, EmitCheckIfLoopsAreDoneDelegate emitCheckIfLoopsAreDone, IConfigurationProvider configuration, IVariable variable) { _resolver = resolver; _arrayComparisonEmitter = arrayComparisonEmitter; _emitCheckIfLoopsAreDone = emitCheckIfLoopsAreDone; _configuration = configuration; _variable = variable; var variableType = variable.VariableType; _elementType = variableType .FindGenericInterface(typeof(IEnumerable <>)) .GetGenericArguments() .Single(); _getEnumeratorMethod = variableType.FindMethod(nameof(IEnumerable.GetEnumerator), Type.EmptyTypes); _enumeratorType = _getEnumeratorMethod.ReturnType; _moveNextMethod = _enumeratorType.FindMethod(nameof(IEnumerator.MoveNext), Type.EmptyTypes); _getCurrentMethod = _enumeratorType.GetPropertyGetter(nameof(IEnumerator.Current)); }
public static ArraysComparison Create(ArrayComparisonEmitter arrayComparisonEmitter, IConfigurationProvider configuration, IVariable variable) { var variableType = variable.VariableType; if (variableType.IsArray && variableType.GetArrayRank() == 1) { return(new ArraysComparison(arrayComparisonEmitter, configuration, variable)); } return(null); }
public static EnumerablesComparison Create( IResolver comparisons, ArrayComparisonEmitter arrayComparisonEmitter, EmitCheckIfLoopsAreDoneDelegate emitCheckIfLoopsAreDone, IConfigurationProvider configuration, IVariable variable) { var variableType = variable.VariableType; if (variableType.ImplementsGenericInterface(typeof(IEnumerable <>)) && !variableType.IsArray) { return(new EnumerablesComparison(comparisons, arrayComparisonEmitter, emitCheckIfLoopsAreDone, configuration, variable)); } return(null); }
private ArraysComparison(ArrayComparisonEmitter arrayComparisonEmitter, IConfigurationProvider configuration, IVariable variable) { _configuration = configuration; _variable = variable; _arrayComparisonEmitter = arrayComparisonEmitter; }