Flood.Modules.ModuleManager.CreateModuleObject C# (CSharp) Method

CreateModuleObject() private method

private CreateModuleObject ( Assembly assembly ) : IModule
assembly System.Reflection.Assembly
return IModule
        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[]{});
        }