rules = rulesEngineRepository.GetRules(x => x.Enabled); foreach (var rule in rules) { var ruleAssembly = Assembly.LoadFrom($"{rule.AssemblyName}.dll"); kernel.Register(Component.For(ruleAssembly.GetType()).LifestyleSingleton()); }
稍后访问Castle.Windsor时,会出现“无法激活”和内部异常“没有支持服务的组件…”。显然,该组件没有注册。
这个 Component.For(ruleAssembly.GetType()) 将为创建一个组件 System.Reflection.Assembly . 我猜你想要的是使用 ruleAssembly.GetExportedTypes()
Component.For(ruleAssembly.GetType())
System.Reflection.Assembly
ruleAssembly.GetExportedTypes()
container.Register( Classes.FromAssembly(ruleAssembly) .FurtherConfigurationHere() )