我已经看过一些类似的答案,但我无法让它发挥作用。
我试图让以下内容更易于维护:
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();
请注意,我想要查找的课程在不同的程序集中......
答案 0 :(得分:1)
我建议您使用这样的内核,因此 Ninject 会关注NinjectModules
:
public static IKernel ConfigureKernel(IKernel kernel)
{
kernel.Load(Assembly.Load("NZBDash.DependencyResolver.Modules"));
return kernel;
}
答案 1 :(得分:0)
修正了它。
我使用Assembly.Load()
:
var result = Assembly.Load("NZBDash.DependencyResolver.Modules").GetTypes()
.Where(a =>
a.IsClass &&
a.BaseType == typeof(NinjectModule))
.ToArray();