对于即将到来的项目,我计划同时使用依赖注入和面向方面的编程。我将自己实现前者,遵循DIY 依赖注入指南并使用LOOM.Net作为 AOP 部分。
创建逻辑类和方面类的交织类型的常见模式是
AspectClass aspect = new AspectClass();
LogicClass logic = Weaver.Create<LogicClass>(aspect);
我的直觉是在胶水代码中执行交织,例如对于实现的类ConcreteLogicA
,ILogicA
这取决于ILogicB
实现ConcreteLogicB
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 的线索),但这样我在胶水代码中添加了更多逻辑。