public static class Helper
{
public static FluentMappingsContainer AddFromNamespaceOf<T>(
this FluentMappingsContainer fmc)
{
Type t = typeof(T);
string ns = t.Namespace;
var y = from x in t.Assembly.GetTypes()
where
x.FullName == ns + "." + x.Name
&& x.BaseType.IsGenericType
&& x.BaseType.GetGenericTypeDefinition().IsDerivedFrom(typeof(ClassMap<>))
select x;
foreach(Type z in y)
fmc.Add(z);
return fmc;
}
private static bool IsDerivedFrom(this Type givenType, Type genericType)
{
if (givenType == genericType)
return true;
if (givenType.BaseType.IsGenericType)
return givenType.BaseType
.GetGenericTypeDefinition().IsDerivedFrom(genericType);
return false;
}
}
Useful when doing unit tests or other kind of testing and don't want to be bothered with creating separate projects/assembly for group of entities. Example: http://code.google.com/p/fluent-nhibernate-lowercase-system/source/browse/#svn
No comments:
Post a Comment