Inside KernalBase.Load(IEnumerable<Assembly assemblies) , GetExportedTypes() , which returns only public types.
However, you can write your own NinjectModule Scanner.
public static class NinjectModuleScanner { public static IEnumerable<INinjectModule> GetNinjectModules(IEnumerable<Assembly assemblies) { return assemblies.SelectMany(assembly => assembly.GetNinjectModules()); } } public static class AssemblyExtensions { public static IEnumerable<INinjectModule> GetNinjectModules(this Assembly assembly) { return assembly.GetTypes() .Where(IsLoadableModule) .Select(type => Activator.CreateInstance(type) as INinjectModule); } private static bool IsLoadableModule(Type type) { return typeof(INinjectModule).IsAssignableFrom(type) && !type.IsAbstract && !type.IsInterface && type.GetConstructor(Type.EmptyTypes) != null; } }
Then you can do the following.
var modules = NinjectModuleScanner.GetNinjectModules(assemblies).ToArray(); var kernel = new StandardKernel();
This solution has not yet been tested.
source share