在.NET 4.6项目中,我们使用了温莎城堡作为依赖解析器。
以下代码解决了当前项目内的所有依赖关系。
IWindsorContainer container = new WindsorContainer().Install(Configuration.FromAppConfig());
var service = container.Resolve<IInterfaceSerice>();
我们正在将其升级到 .NET 6/7 并且 Configuration.FromAppConfig() 在 .NET 最新版本中不受支持。
有没有一种快速注册当前程序集及其所有依赖项而无需逐一注册每个组件的方法?
错误“配置不包含'FromAppConfig'的定义
仍然支持 XML 配置,但是它是旧 Windsor 的保留,因为 Fluent API 更强大。这是一个修复:
string configFilePath = $"{Assembly.GetExecutingAssembly().Location}.config";
IWindsorContainer container = new WindsorContainer()
.Install(Configuration.FromXmlFile(configFilePath));
您可能希望将 XML 注册分离到另一个文件中,这样可以简化 xml 文件名。
IWindsorContainer container = new WindsorContainer()
.Install(Configuration.FromXmlFile("dependencies.xml");
// or
IWindsorContainer container = new WindsorContainer("dependencies.xml");
为了将来参考,您可以考虑将 XML 配置移动到流畅的 API,同时仍然保持程序集扫描(docs)。