private IModule CreateModuleObject(Assembly assembly)
{
Type moduleType = null;
foreach (var type in assembly.GetTypes())
{
if (!typeof (IModule).IsAssignableFrom(type))
continue;
if(moduleType != null)
throw new Exception("Package can have only one IModule implementation.");
moduleType = type;
}
if(moduleType == null)
throw new Exception("Package must have one IModule implementation.");
var ctor = moduleType.GetConstructor(new Type[] {});
if(ctor == null)
throw new Exception("Package's IModule implementation must have a paramerless constructor.");
return (IModule) ctor.Invoke(new object[]{});
}