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

眺める: 21364|答える: 1

[出典] .net/C#はAttributeを使ってシンプルなAOPを実装しています

[リンクをコピー]
掲載地 2017/04/18 14:54:11 | | |

まずはシンプルなコードから始めましょう。



例えば、これがウェブプログラムだとしましょう。まずセッションを確認し、次に権限を確認し、トランザクションを開始し、ログを書き、操作自体を実行し、最後にログを書きます。 明らかに、上記のすべてのメソッド呼び出しをDoSomething()で書くことはできないので、コードは大変なものになります。ではどうすればいいのでしょうか?

Springのようなフレームワークを使うなど実装方法は多岐にわたりますが、実際のプロジェクトではフレームワークを軽々しく導入することはできず、多くの場合、自分たちでいくつかのメカニズムを書く必要があります。

ここで私はMVCのフィルターを思い浮かべます。コントローラーやアクションに属性タグを付けていれば、メソッドの実行前後に他のことができるのです。 では、単純にフィルターの実装をシミュレートしましょう。

まず、元の手法は特徴ラベルの洗練された方法に変換されます。




特徴タグには、特徴タグに対応するクラスやAOP実装が存在し、それらはファイルやアセンブリに独立して含めることができます。

まず、メソッドに付随するラベル(空として実装):

//贴在方法上的标签
[AttributeUsage(AttributeTargets.Method, AllowMultiple = false)]
public sealed class MyInterceptorMethodAttribute : Attribute { }
その後、クラスに付けるラベルを定義します:




以下はMyAopHandlerクラスの定義で、以下のように実装されています。




上記のコードの特定の操作部分は「プロキシクラス」と同等であり、メソッド実行の文脈を本質的に変えることに注意してください。 デリゲートのようなオブジェクト指向プログラム構造は、特定の実装を外部に公開し、二次開発のために利用することができます。




先の:ES5、ES6、ES2016、ESです。 次回:Javascrip{filter}tのバージョンはどうなっているのか?
次に:PowerShell 入門チュートリアル - v0.3バージョン
免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com