查找从类型派生的所有类并激活该类型
本文关键字:类型 激活 派生 查找 | 更新日期: 2023-09-27 18:28:01
我已经看过一些类似的答案,但我无法使其发挥作用。
我正在尝试使以下内容更易于维护:
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();
请注意,我要查找的类位于不同的程序集中。。。
我建议您使用这样的内核,因此Ninject将处理NinjectModules
:
public static IKernel ConfigureKernel(IKernel kernel)
{
kernel.Load(Assembly.Load("NZBDash.DependencyResolver.Modules"));
return kernel;
}
修复它。
我使用了Assembly.Load()
:
var result = Assembly.Load("NZBDash.DependencyResolver.Modules").GetTypes()
.Where(a =>
a.IsClass &&
a.BaseType == typeof(NinjectModule))
.ToArray();