当我使用Unity IOC时,我想知道何时使用builddup以及何时使用resolve。
我什么时候打电话拆机?
由于
答案 0 :(得分:21)
当您希望Unity容器构建实例(只在您需要它或预先存在的单例时)时,使用Resolve,注入其依赖项并将对象的引用交给您。
当您已经拥有该对象的实例并希望容器只解析并注入其依赖项时,就会使用BuildUp。
拆解与BuildUp相反。您可以将对象传递给容器的Teardown方法,以关闭/清理/无论您想要什么。现有容器行为在拆解时没有任何作用,但可以编写扩展以利用此功能。您还可以使对象实现IDisposable,当容器本身处置时,容器将调用对象上的Dispose()。
IMyService service = container.Resolve<MyService>(); // New service or pre-existing singleton
IMyService service = GetMyService(); // Get the instance from some source
container.BuildUp(service); // Inject dependencies
container.Teardown(service); // Clean-up