今後のプロジェクトでは、依存性注入とアスペクト指向プログラミングの両方を使用する予定です。DIY依存性注入ガイドに従って、前者を自分で実装し、AOP部分にLOOM.Netを使用します。
ロジック クラスとアスペクト クラスの織り交ぜた型を作成する一般的なパターンは次のとおりです。
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 の手がかりのようなものです) が、このようにして、グルー コードにもう少しロジックを追加しています。