/* **************************************************************************** * * Copyright (c) Microsoft Corporation. All rights reserved. * * This software is subject to the Microsoft Public License (Ms-PL). * A copy of the license can be found in the license.htm file included * in this distribution. * * You must not remove this notice, or any other, from this software. * * ***************************************************************************/ namespace System.Web.Mvc { using System; using System.ComponentModel; using System.Reflection; internal static class ParameterInfoUtil { public static bool TryGetDefaultValue(ParameterInfo parameterInfo, out object value) { // this will get the default value as seen by the VB / C# compilers // if no value was baked in, RawDefaultValue returns DBNull.Value object rawDefaultValue = parameterInfo.RawDefaultValue; if (rawDefaultValue != DBNull.Value) { value = rawDefaultValue; return true; } // if the compiler did not bake in a default value, check the [DefaultValue] attribute DefaultValueAttribute[] attrs = (DefaultValueAttribute[])parameterInfo.GetCustomAttributes(typeof(DefaultValueAttribute), false); if (attrs == null || attrs.Length == 0) { value = default(object); return false; } else { value = attrs[0].Value; return true; } } } }