对于 DI,我使用的是 Microsoft 的 Unity。对于动态 Aspect Weaving,我使用的是 Rapier-LOOM。
方面编织器要求我使用工厂方法实例化编织对象Weaver.CreateInstance(System.Type)
,并且不提供交织现有实例的方法。
DI 容器允许我通过使用IUnityContainer.Resolve(System.Type)
方法解决依赖关系,该方法解决依赖关系并实例化注入类型的对象。
这两种方法显然是冲突的。 解决此冲突的推荐方法是什么?
到目前为止我的想法:
- 查询映射并“手动解析”依赖项(使用
IUnityContainer.Registrations
属性)。创建一个组合的“DI+AOP”机制——给定一个要解析的类型——找到目标映射类型,然后使用 Weaver 实例化。 - 创建我自己的
IUnityContainer
接口实现,它使用 Weaver(而不是 Activator)进行实例化
附言
如果我在这里偏离轨道并且可以避免而不是解决冲突 - 请告诉我。