/// <summary> /// Initialize a new instance of the <see cref="ParameterDescriptor"/> class. /// </summary> /// <param name="methodDescriptor">The parent <see cref="MethodDescriptor"/>.</param> /// <param name="parameterInfo">The <see cref="ParameterInfo"/> to wrap.</param> internal ParameterDescriptor(MethodDescriptor methodDescriptor, ParameterInfo parameterInfo) : base(parameterInfo.ParameterType, parameterInfo.Name) { if (parameterInfo.IsOutParam()) { var memberInfo = parameterInfo.Member; var declaringType = memberInfo.DeclaringType; throw new ArgumentException(string.Format("Cannot apply rules to an 'out' parameter. Type = '{0}'. Method = '{1}'. Parameter = '{2}'", declaringType.ToUserFriendlyString(), memberInfo.Name, parameterInfo.Name), "parameterInfo"); } Position = parameterInfo.Position; Method = methodDescriptor; AddRulesForParameterInfo(parameterInfo); }