是否可以在注册表中注册一个接口(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/