/// <summary> /// Initializes a new instance of the <see cref="ParameterAdviceContext" /> class. /// </summary> /// <param name="parameterAdvice">The parameter advice.</param> /// <param name="targetParameter">The parameter information.</param> /// <param name="parameterIndex">Index of the parameter.</param> /// <param name="adviceValues">The advice values.</param> /// <param name="nextAdviceContext">The next advice context.</param> internal ParameterAdviceContext(IParameterAdvice parameterAdvice, ParameterInfo targetParameter, int parameterIndex, AdviceValues adviceValues, AdviceContext nextAdviceContext) : base(adviceValues, nextAdviceContext) { // input parameters must be method parameters (not return value) and not out (IsOut is exclusive) IsIn = parameterIndex >= 0 && !targetParameter.IsOut; // output parameters are return value or byref or out IsOut = parameterIndex == -1 || targetParameter.ParameterType.IsByRef || targetParameter.IsOut; TargetParameter = targetParameter; ParameterType = targetParameter.ParameterType.IsByRef ? targetParameter.ParameterType.GetElementType() : targetParameter.ParameterType; _parameterAdvice = parameterAdvice; _parameterIndex = parameterIndex; }
/// <summary> /// Initializes a new instance of the <see cref="ParameterAdviceContext"/> class. /// </summary> /// <param name="parameterAdvice">The parameter advice.</param> /// <param name="targetParameter">The target parameter.</param> /// <param name="parameterIndex">Index of the parameter.</param> /// <param name="target">The target.</param> /// <param name="targetType">Type of the target.</param> /// <param name="parameters">The parameters.</param> /// <param name="nextAdviceContext">The next advice context.</param> protected ParameterAdviceContext(IParameterAdvice parameterAdvice, ParameterInfo targetParameter, int parameterIndex, object target, Type targetType, object[] parameters, AdviceContext nextAdviceContext) : this(parameterAdvice, targetParameter, parameterIndex, new AdviceValues(target, targetType, parameters), nextAdviceContext) { }