c# - 结构图 - 覆盖注册

标签 c# dependencies registry structuremap code-injection

是否可以在注册表中注册一个接口(interface),然后“重新注册”它以覆盖第一次注册?

即:

For<ISomeInterface>().Use<SomeClass>();
For<ISomeInterface>().Use<SomeClassExtension>();

我想要的是在运行时,当我请求 ISomeInterface 时,我的对象工厂返回 SomeClassExtension

提前致谢!

最佳答案

好消息,我发现是的。这完全取决于注册表规则添加到对象工厂容器的顺序。因此,如果您像我一样使用多个注册表类,则需要找到一种方法来优先将它们添加到容器中。

换句话说,不要使用以错误顺序获取所有 Registry 类的 .LookForRegistries(),而是尝试查找所有 Registry 文件,按照你想要的顺序设置它们,然后手动将它们添加到对象工厂容器中:

    ObjectFactory.Container.Configure(x => x.AddRegistry(registry));

这样,您就可以完全控制自己想要的规则。

希望对您有所帮助:)

关于c# - 结构图 - 覆盖注册,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13918592/

相关文章:

c# - 在 '/u263a' 上使用 WriteConsoleOutput 总是打印不正确

c# - Web API 未返回任何数据结果

c# SqlDataReader 数据库存储guid或null

hibernate 空间 : "No Dialect mapping for JDBC type: 3000"

C++ 从注册表中获取 Windows 产品 ID

C#8.0 switch 语句和局部变量

Azure Functions 依赖项与 AzureFunctionsTools 依赖项发生冲突

java - Maven 多个存储库——maven 究竟如何决定哪个存储库获取哪个 Artifact ?

c# - 如何让我的应用程序从“开始”菜单运行?

registry - 将值写入 Inno Setup 中存储在数组中的所有注册表项