0

我在类的构造函数中有这段代码。

        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 因“激活失败”和“没有支持服务的组件...”的内部异常而爆炸。显然,该组件未注册。

有人可以指出我在这里出错的地方吗?谢谢。

4

1 回答 1

0

Component.For(ruleAssembly.GetType())将为System.Reflection.Assembly. _ 我猜你想要的是使用一些东西ruleAssembly.GetExportedTypes()或类似的东西:

container.Register(
  Classes.FromAssembly(ruleAssembly)
    .FurtherConfigurationHere()
)
于 2018-10-31T10:49:21.390 回答