DI には Microsoft の Unity を使用しています。動的なアスペクト ウィービングには、Rapier-LOOM を使用しています。
アスペクト ウィーバーでは、ファクトリ メソッドを使用して織り込まれたオブジェクトをインスタンス化する必要がありWeaver.CreateInstance(System.Type)
、既存のインスタンスを織り交ぜる手段は提供されません。
DI コンテナーを使用IUnityContainer.Resolve(System.Type)
すると、依存関係を解決し、注入された型のオブジェクトをインスタンス化するメソッドを使用して、依存関係を解決できます。
これら 2 つのアプローチは明らかに矛盾しています。 この競合を解決するための推奨される方法は何ですか?
私がこれまでに持っていたアイデア:
- マッピングを照会し、依存関係を「手動で解決」します (
IUnityContainer.Registrations
プロパティを使用)。結合された「DI + AOP」メカニズムを作成します。これは、解決するタイプを指定して、ターゲットのマップされたタイプを見つけ、Weaver を使用してインスタンス化します。 IUnityContainer
(Activator の代わりに) Weaver を使用してインスタンス化するインターフェイスの独自の実装を作成します。
PS
私がここで軌道に乗っておらず、競合を解決するのではなく回避できる場合は、お知らせください。