【发布时间】:2014-10-09 08:53:21
【问题描述】:
对于即将到来的项目,我计划同时使用依赖注入和面向方面的编程。我将自己实现前者,遵循DIY dependency injection guide 并使用LOOM.Net 作为AOP 部分。
创建逻辑类和方面类的交织类型的常用模式是
AspectClass aspect = new AspectClass();
LogicClass logic = Weaver.Create<LogicClass>(aspect);
我的直觉是在胶水代码中执行交织,例如对于实现ILogicA的类ConcreteLogicA,它依赖于ConcreteLogicB实现的ILogicB
class MyInjector
{
...
public ILogicA GetLogicA(AspectClass aspectToInterweave)
{
return Weaver.Create<ConcreteLogicA>(aspectToInterweave, GetLogicB(aspectToInterweave));
}
public ILogicB GetLogicB(AspectClass aspectToInterweave)
{
return Weaver.Create<ConcreteLogicB>(aspectToInterweave);
}
...
}
这是一个可行的解决方案,还是偏离正轨。优点是,我不必将我的逻辑与我的方面混合在一起(诚然,这是 AOP 的线索),但这样我在胶水代码中添加了更多逻辑。
【问题讨论】:
标签: c# dependency-injection aop rapier-loom