首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Autofac构建已解析实例的图表?

如何使用Autofac构建已解析实例的图表?
EN

Stack Overflow用户
提问于 2018-11-15 11:39:03
回答 2查看 512关注 0票数 0

在所有注册之后,我正在执行ContainerBuilder.RegisterCallback并订阅所有IComponentRegistration.PreparingIComponentRegistration.Activating事件,以便能够处理所有激活。通过这两个事件,我能够构建一棵树,事件的顺序如下所示:

  • 制备:根
    • 制备: FirstLevel_A
    • 激活: FirstLevel_A
    • 制备: FirstLevel_B
      • 制备: SecondLevel_C
      • 激活: SecondLevel_C

代码语言:javascript
复制
- Activating: FirstLevel\_B

  • 激活:根

但是,如果一些注册不是Per Dependency,我将有一个图而不是树。这案子能办到吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-11-15 12:07:18

根据这个答案的说法,还有另一种处理这些事件的方法:

如果您想变得更好,可以在容器ChildLifetimeScopeBeginningResolveOperationBeginningResolveOperationEndingCurrentScopeEnding事件上设置一些事件处理程序。

  • ChildLifetimeScopeBeginning期间,您需要设置一些东西来自动附加到任何子生命周期ResolveOperationBeginning事件。
  • ResolveOperationBeginning期间,您将记录将要解决的问题。
  • ResolveOperationEnding期间,您会记录出任何异常。
  • CurrentScopeEnding期间,您需要取消订阅该作用域上的任何事件,这样垃圾收集器就可以使用其所有实例清理生存期范围。

这很难,但应该做好这份工作。

票数 0
EN

Stack Overflow用户

发布于 2018-11-15 11:56:18

这不是一个答案,但它太大了,不能发表评论。

AutoFac是一个很好的IoC容器,但它有两个主要问题。一个是糟糕的注册API,另一个是完全缺乏诊断。AutoFac的最初作者曾经尝试创建一个应用程序,该应用程序可以帮助实现这个功能:白盒。该开发已经停止,并转移到Autofac分析,这是多年来一直不活跃的。

您想要做的事情需要深入了解AutoFac的内部工作,因此您可能需要查看有关如何完成所需内容的想法的来源。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53318662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档