查找所有派生自类型的 类 并激活该类型

Find all classes that derive from type and activate that type

我已经看过一些类似的答案,但我无法让它工作。

我正在尝试使以下内容更易于维护:

var modules = new INinjectModule[]
{
    new ServiceModule(),
    new ApplicationSettingsModule(),
    new SerializerModule(),
    new LoggerModule(),
    new SqliteModule(),
    new SetupModule(), 
    new CacheModule(), 
    new AuthenticationModule(), 
};

每次我添加一个新的NinjectModule我需要修改这个数组来包含它。

我希望能够找到从 NinjectModule 派生的所有类型并激活它们并将它们全部放入一个集合中。

这是我尝试过的方法,但我没有得到任何源自 NinjectModule

的 类
var classes = (from domainAssembly in AppDomain.CurrentDomain.GetAssemblies()
                from assemblyType in domainAssembly.GetTypes()
                where typeof(NinjectModule).IsAssignableFrom(assemblyType)
                select assemblyType).ToArray();

请注意,我要查找的 类 在不同的程序集中...

已修复。

我用了Assembly.Load():

var result = Assembly.Load("NZBDash.DependencyResolver.Modules").GetTypes()
               .Where(a => 
               a.IsClass &&
               a.BaseType == typeof(NinjectModule))
               .ToArray();

我建议你像那样使用内核,所以 Ninject 会处理 NinjectModules:

public static IKernel ConfigureKernel(IKernel kernel)
{
      kernel.Load(Assembly.Load("NZBDash.DependencyResolver.Modules"));
      return kernel;
}