43 lines
1.6 KiB
C#
43 lines
1.6 KiB
C#
/* ****************************************************************************
|
|
*
|
|
* 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;
|
|
}
|
|
}
|
|
|
|
}
|
|
}
|