我们使用 Unity 作为我们的 IOC 容器。
到目前为止,我们的程序是以在需要使用接口(interface)之前解析接口(interface)的方式编写的。
然而,这会导致接口(interface)在循环内被解析。这可能导致接口(interface)在一次运行中被解析 100,000 次。
问题是:将解析移到循环外会有显着差异,还是这只是微优化?
我们的程序需要一天的时间才能运行。所以对于那些会回答“自己测试”的人来说,在这里问问题其实更快:)
最佳答案
这取决于你如何注册我会说的接口(interface)。你是用哪个 LifetimeManager 注册的?
你的程序总是需要一个新实例吗?或者它可以是一遍又一遍的同一个实例吗?
如果需要同一个实例(Singleton),使用ContainerControlledLifetimeManager:
Container.RegisterType<Interface, Implementation>(new ContainerControlledLifetimeManager());
如果你不关心你得到的是哪个实例(新的还是旧的,由GC维护),你可以使用ExternallyControlledLifeTimeManager:
Container.RegisterType<Interface, Implementation>(new ExternallyControlledLifeTimeManager());
您还可以创建自己的 LifetimeManager 实现,以更好地满足您的需求。
看看这篇关于 LifetimeManagers 的文章
关于c# - Resolve在Unity中的性能和使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9224954/