10
|
stakx - no longer contributing Saravana Kumar · 技术社区 · 15 年前 |
![]() |
1
15
这里的其他答案很有见地,但有一个问题。在这两种情况下,如果苹果有其他需要处理的依赖项,则不会进行正确的清理。 Autofac 2在此提供了一个新的帮助功能,称为“自有实例”。我注意到您的注册码是Autofac 1.4,因此如果您无法升级,请告诉我(还有其他不太透明的方法) 照常注册苹果(非外部所有):
将AppleFactory声明为:
在Autofac 2中,您不再需要调用RegisterGeneratedFactory()-这是自动的。 然后,在《马夫》中,像这样喂马:
(请注意.Value属性以获取基础IApple。 在使用块结束时,将清除苹果及其所有依赖项。
|
![]() |
2
3
唯一的方法是修改苹果的注册
不过,通过此注册,您的提要代码将按预期工作。
注
:关于接口是否应继承的讨论
IApple的消费者现在完全不知道实例是可识别的。在这种情况下,我们将让容器处理处置。 因此,我的结论是,作为苹果和IApple的开发者,我可以选择是要求消费者处理垃圾,还是将垃圾留给一个容器。 |
![]() |
3
2
然后注册该类两次:
然后,您可以将DisposableAppleFactory注入到需要创建和dispose Apple的类中。 对于只需要一个与容器具有相同生存期的apple的类,可以注入IApple。 然而,事实上,你需要两者都可能表明你是混合 newables and injectables . 苹果可能只是一个“可更新”的对象,即不需要由IoC容器管理的对象。 |
|
user2414250 · 如何判断资源是否处于非托管状态? 7 年前 |
![]() |
J.Lucas · 处置方法的重要性(libgdx) 7 年前 |
![]() |
1iveowl Diego Sanchez · 异步一次性创建 7 年前 |
![]() |
Czeshirecat · 在更改控件的字体时,是否应丢弃旧字体? 10 年前 |
![]() |
user2813889 · 从列表中删除对象后,我应该将其更改为Null吗? 11 年前 |
![]() |
Zerowalker · 如果我在整个跑步过程中都需要一次性物品,该怎么办? 11 年前 |