我在类的构造函数中有这段代码。
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());
}
Assembly.LoadFrom()语句按预期工作并正确加载了程序集,但是下面的kernel.Register()调用似乎并未注册该组件。
稍后访问该应用程序时,Castle.Windsor会炸毁并显示“无法激活”和内部异常“无组件可支持该服务...”。显然,该组件未注册。
有人可以指出我在哪里出问题了吗?谢谢。
答案 0 :(得分:0)
Component.For(ruleAssembly.GetType())
将为System.Reflection.Assembly
创建一个组件。我猜您想使用的是ruleAssembly.GetExportedTypes()
或类似的东西:
container.Register(
Classes.FromAssembly(ruleAssembly)
.FurtherConfigurationHere()
)