この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 23470|答える: 0

[出典] .NET/C#はAutofacとDynamicProxyを介してAOPを実装しています

[リンクをコピー]
掲載地 2017/11/04 12:21:23 | | | |
AOPとは何ですか? 百科事典を引用すると、AOPはAspect Oriented Programmingの略称であり、これは「フロント指向プログラミング」を意味し、事前コンパイル手法と動的エージェントを通じて実行時にプログラム機能の統一保守を実現する技術です。 AOPの実装方法は主に2つあり、1つはコンパイル時の静的インプラントで、利点は高効率、欠点は柔軟性の欠如、そして.netのpostsharp(有料)が代表例です。 もう一つの方法は動的プロキシで、これは前者とは逆の利点と欠点を持ち、ターゲットタイプのプロキシを動的に作成し、プロキシコールを通じてそれを傍受します。 AOPができることとしては、一般的なユースケースとしてトランザクション処理やログ記録などがあります。 AutofacがどのようにAOPを実装しているかについて話しましょう。Autofacは.net上で非常に優れたIOCコンテナであり、パフォーマンスも非常に優れています(.net上で最も効率的なコンテナです)、さらにAOPは単純に虎のような存在です。 AutofacのAOPは、Castleプロジェクトの中核部分(これもコンテナ)であるAutofac.Extras.DynamicProxyを通じて実装されており、名前の通り動的プロキシとして実装されています。

使用前の準備:

NugetパッケージのAutofac、Autofac.Extras.DynamicProxyをインストールし、成功裏に3つの参照が追加されます


ついに正式に始まった!



ステップ1:迎撃機の作成

以下は、傍受された方法名、パラメータのリスト、そしてリターン結果を表示するシンプルなインターセプタの例です

ステップ2:インターセプターをオートファックコンテナに登録する

インターセプターはAufofacコンテナ内でインターセプターの種類または名称で登録されなければならず、これにより使用方法が異なっています(後述)。


名前注入
ビルダー。 Register(c => new CallLogger(Console.Out))を使います。 名前(<IInterceptor>「ログコール」);

タイプ注入
ビルダー。 Register(c => 新しいCallLogger(Console.Out));


ステップ3:迎撃機を起動する

インターセプタを有効にする主な方法は2つあります:EnableInterfaceInterceptors()、EnableClassInterceptors()。

EnableInterfaceInterceptorsメソッドは、インターフェースプロキシを動的に生成します

EnableClassInterceptorsメソッドはターゲットクラスのサブクラスプロキシクラスを作成しますが、ここでは仮想メソッドのみをインターセプトし、メソッドをオーバーライドすることに注意してください

インターセプターのサンプルコードを有効にする:


ステップ4:迎撃したいタイプを指定する

方法は2つあります:

最初のタイプ:タイプに特徴属性を追加する




2つ目は、登録タイプがコンテナに転送される際にインターセプターを動的に注入する方法です


ステップ5:効果のテスト

1. プロキシ傍受



サークルクラスコード:



2. インターフェースプロキシ傍受



IShapeインターフェースコード:

サークルクラスコード:







先の:VS2010 C# Close Port Tool ソースコード
次に:JS-MD5暗号化機能
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com