Merge pull request #205 from m3rlinez/master
[mono.git] / mcs / class / System.Web.Mvc / System.Web.Mvc / TypeHelpers.cs
1 /* ****************************************************************************\r
2  *\r
3  * Copyright (c) Microsoft Corporation. All rights reserved.\r
4  *\r
5  * This software is subject to the Microsoft Public License (Ms-PL). \r
6  * A copy of the license can be found in the license.htm file included \r
7  * in this distribution.\r
8  *\r
9  * You must not remove this notice, or any other, from this software.\r
10  *\r
11  * ***************************************************************************/\r
12 \r
13 namespace System.Web.Mvc {\r
14     using System;\r
15 \r
16     internal static class TypeHelpers {\r
17 \r
18         public static bool TypeAllowsNullValue(Type type) {\r
19             // reference types allow null values\r
20             if (!type.IsValueType) {\r
21                 return true;\r
22             }\r
23 \r
24             // nullable value types allow null values\r
25             // code lifted from System.Nullable.GetUnderlyingType()\r
26             if (type.IsGenericType && !type.IsGenericTypeDefinition && (type.GetGenericTypeDefinition() == typeof(Nullable<>))) {\r
27                 return true;\r
28             }\r
29 \r
30             // no other types allow null values\r
31             return false;\r
32         }\r
33 \r
34     }\r
35 }\r