Fixing Brail Templates for VS Net wizards.
[castle.git] / ActiveRecord / Castle.ActiveRecord / Framework / Internal / NHibernateNullablesSupport.cs
blob1f41304b8afa531793f41a00b416b26804891988
1 // Copyright 2004-2007 Castle Project - http://www.castleproject.org/
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 // http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
15 namespace Castle.ActiveRecord.Framework.Internal
17 using System;
19 internal class NHibernateNullablesSupport
21 private const String NullableAsm = "Nullables";
23 private const String NullableIType = "Nullables.NHibernate.{0}Type, Nullables.NHibernate";
25 private static Type tINullableType;
27 static NHibernateNullablesSupport()
29 try
31 tINullableType = Type.GetType("Nullables.INullableType, " + NullableAsm, false);
33 catch
35 //This can happen when someone is registerring to the AssemblyResolve event and doesn't handle
36 // missing assemblies correctly.
37 //For instance, MbUnit.AddIn.MbUnitTestRunner.AssemblyResolveHandler has this behavior.
38 tINullableType = null;
42 public static bool IsNHibernateNullableType(Type type)
44 return tINullableType != null && tINullableType.IsAssignableFrom(type);
47 public static String GetITypeTypeNameForNHibernateNullable(Type type)
49 if (type == null)
51 return null;
54 bool isSupported = type.Assembly.GetName().Name == NullableAsm;
56 if (!isSupported)
58 throw new ActiveRecordException(String.Format("ActiveRecord does not support Nullable for {0} natively.", type));
61 return String.Format(NullableIType, type.Name);