問題タブ [rapier-loom]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
.net - 依存性注入と動的アスペクト ウィービングの組み合わせ
DI には Microsoft の Unity を使用しています。動的なアスペクト ウィービングには、Rapier-LOOM を使用しています。
アスペクト ウィーバーでは、ファクトリ メソッドを使用して織り込まれたオブジェクトをインスタンス化する必要がありWeaver.CreateInstance(System.Type)
、既存のインスタンスを織り交ぜる手段は提供されません。
DI コンテナーを使用IUnityContainer.Resolve(System.Type)
すると、依存関係を解決し、注入された型のオブジェクトをインスタンス化するメソッドを使用して、依存関係を解決できます。
これら 2 つのアプローチは明らかに矛盾しています。 この競合を解決するための推奨される方法は何ですか?
私がこれまでに持っていたアイデア:
- マッピングを照会し、依存関係を「手動で解決」します (
IUnityContainer.Registrations
プロパティを使用)。結合された「DI + AOP」メカニズムを作成します。これは、解決するタイプを指定して、ターゲットのマップされたタイプを見つけ、Weaver を使用してインスタンス化します。 IUnityContainer
(Activator の代わりに) Weaver を使用してインスタンス化するインターフェイスの独自の実装を作成します。
PS
私がここで軌道に乗っておらず、競合を解決するのではなく回避できる場合は、お知らせください。
c# - アスペクト クラス コードは、Rapier-LOOM のターゲット クラス コードと織り合わせることができません
「C# Visual Studio 2008.net を使用して」アスペクト クラスとターゲット クラスを作成しましたが、アプリケーションを実行してそれらを織り交ぜるたびに、ターゲット クラスのみが実行されましたが、アスペクト クラスを実行できませんでした。レイピア ルームへの参照を添付しようとしました。 rapier-loom をアンインストールして再インストールしようとしましたが、同じ問題が発生します....何が問題なのですか?
これはアスペクトクラスです:
これは適用方法です:
ターゲット クラスは次のとおりです。
c# - DIY 依存性注入とアスペクト指向プログラミングの組み合わせ
今後のプロジェクトでは、依存性注入とアスペクト指向プログラミングの両方を使用する予定です。DIY依存性注入ガイドに従って、前者を自分で実装し、AOP部分にLOOM.Netを使用します。
ロジック クラスとアスペクト クラスの織り交ぜた型を作成する一般的なパターンは次のとおりです。
私の直感は、グルーコードで織り交ぜを実行することです。たとえば、によって実装されるクラスConcreteLogicA
に依存ILogicA
します。ILogicB
ConcreteLogicB
これは実行可能な解決策でしょうか、それとも軌道から外れていますか。利点は、自分のロジックと自分のアスペクトを混在させる必要がないことです (これは確かに AOP の手がかりのようなものです) が、このようにして、グルー コードにもう少しロジックを追加しています。