代码之家  ›  专栏  ›  技术社区  ›  IntoNET

向Castle Windsor注册动态加载的DLL

  •  0
  • IntoNET  · 技术社区  · 7 年前

            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时,会出现“无法激活”和内部异常“没有支持服务的组件…”。显然,该组件没有注册。

    1 回复  |  直到 7 年前
        1
  •  0
  •   Krzysztof Kozmic    7 年前

    这个 Component.For(ruleAssembly.GetType()) 将为创建一个组件 System.Reflection.Assembly . 我猜你想要的是使用 ruleAssembly.GetExportedTypes()

    container.Register(
      Classes.FromAssembly(ruleAssembly)
        .FurtherConfigurationHere()
    )