代码之家  ›  专栏  ›  技术社区  ›  astef

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

  •  0
  • astef  · 技术社区  · 7 年前

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

    • 准备:根
      • 准备:第一级
      • 激活:第一级_A
      • 准备:第一级
        • 准备:第二级
        • 激活:第二级
      • 激活:第一级
    • 激活:根

    但如果有些注册不成功呢 Per Dependency 我将有一个图形,而不是一棵树。有可能处理这个案子吗?

    2 回复  |  直到 7 年前
        1
  •  0
  •   Jeroen    7 年前

    不是答案,但太大了,无法发表评论。

    AutoFac是一个很好的IoC容器,但它有两个主要问题。一个是糟糕的注册API,另一个是完全缺乏诊断。AutoFac的原始作者曾试图创建一个应用程序,该应用程序将有助于: Whitebox .发展已经停止,并继续发展 Autofac Analysis ,多年来一直不活跃。

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

        2
  •  0
  •   astef    7 年前

    this answer 还有另一种处理这些事件的方法:

    如果你想变得更有趣,你可以在 容器 ChildLifetimeScopeBeginning , ResolveOperationBeginning , ResolveOperationEnding CurrentScopeEnding 事件。

    • 在期间 儿童时代开始 你需要设置一些 自动附加到任何子对象 解析操作开始 事件。

    • 在期间 解析操作开始 你会记录下接下来会发生什么 断然的。

    • 在期间 解析操作结束 你会记录任何异常 出来了。

    • 在期间 当前范围结束 你需要取消订阅 该作用域上的任何事件,以便垃圾收集器可以清理 生命周期范围及其所有实例。

    这更难,但应该完成这项工作。