Mono.CSharp.Parameter.ResolveDefaultValue C# (CSharp) Method

ResolveDefaultValue() public method

public ResolveDefaultValue ( ResolveContext rc ) : void
rc ResolveContext
return void
		public void ResolveDefaultValue (ResolveContext rc)
		{
			//
			// Default value was specified using an expression
			//
			if (default_expr != null) {
				default_expr = ResolveDefaultExpression (rc);
				return;
			}

			if (attributes == null)
				return;
			
			var pa = attributes.Search (rc.Module.PredefinedAttributes.OptionalParameter);
			if (pa == null)
				return;

			//
			// Default value was specified using an attribute
			//
			attributes.Attrs.Remove (pa);

			TypeSpec expr_type = null;
			pa = attributes.Search (rc.Module.PredefinedAttributes.DefaultParameterValue);
			if (pa != null) {
				attributes.Attrs.Remove (pa);
				default_expr = pa.GetParameterDefaultValue (out expr_type);
			} else {
				default_expr = EmptyExpression.MissingValue;
			}

			if (default_expr == null) {
				if (expr_type == null)
					expr_type = parameter_type;

				default_expr = new DefaultValueExpression (new TypeExpression (expr_type, Location), Location);
			}

			default_expr = default_expr.Resolve (rc);
		}

Usage Example

        public void ResolveDefaultValues(MemberCore m)
        {
            ResolveContext rc = null;

            for (int i = 0; i < parameters.Length; ++i)
            {
                Parameter p = (Parameter)parameters [i];

                //
                // Try not to enter default values resolution if there are is not any default value possible
                //
                if (p.HasDefaultValue || p.OptAttributes != null)
                {
                    if (rc == null)
                    {
                        rc = new ResolveContext(m);
                    }

                    p.ResolveDefaultValue(rc);
                }
            }
        }