2

asp.net unityでのインターフェイス インターセプトとコンストラクタ インジェクションの違いは何ですか? Unity で DI を理解していません。古いプロジェクトと unity.config で作業しています。

<register type="ICRIC2012TrialUserService" mapTo="CRIC2012TrialUserService">
        <lifetime type="perthread"/>
        <interceptor type="InterfaceInterceptor"/>
        <policyInjection/>
</register>

しかし、持っていない人もいます

<interceptor type="InterfaceInterceptor"/>

しかし、プロジェクトでは、これらのクラスとインターフェースは次のように同じように機能します

private readonly IIncomingEstimateService _incomingEstimateService;

        public ContractService(IIncomingEstimateService incomingEstimateService)
        {
            _incomingEstimateService = incomingEstimateService;
        }
4

1 に答える 1

5

インターセプトとインジェクションは 2 つの異なるものです。

インターセプトは通常、クロスカッティング コンサーン (ロギングなど) をクラスに追加するために使用されます。クラスを何度も何度も実装する必要はありません。Unity での傍受は、着信メソッド呼び出しを受信し、呼び出しが最終的に元のターゲット オブジェクトに到達するまで、いわゆるインターセプターのパイプラインを介してそれらをチャネルするプロキシを生成することによって機能します。

この 2 つの記事では、Unity によるインターセプトのしくみを紹介しています。

Unity のインターセプター

Unity で傍受を使用する

コンストラクター注入は、依存性注入パターンを実装する 1 つの方法です。これは、アプリケーションを構成してコンポーネントを分離する方法を示すパターンです。

ウェブ上にはたくさんの記事があります。

コントロール コンテナーの反転と依存性注入パターン

依存性注入パターン – それは何ですか? なぜ気にするのですか?

傍受と注入はまったく別のものです。ただし、一部の依存性注入コンテナー (Unity など) では、両方を実行できます。コンテナー インフラストラクチャを使用して、クラスに依存関係を挿入し、それらのクラスへの呼び出しをインターセプトできます。

于 2012-07-18T06:16:26.013 に答える