示例#1
0
        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);
        }
示例#6
0
        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));
        }
示例#7
0
 private IndirectComparison(EmitterDelegate checkForIntermediateResultEmitter, MethodInfo method, IVariable variable)
 {
     _checkForIntermediateResultEmitter = checkForIntermediateResultEmitter;
     _variable = variable;
     _method   = method;
 }