アスペクト指向プログラミングの周りに頭を抱くようなリソースはありますか?C#でのアスペクト指向プログラミング
PS:私はちょうどそれの周りにあなたの頭を取得しないライブラリやフレームワーク.NETのために利用できるまたはC#:)
アスペクト指向プログラミングの周りに頭を抱くようなリソースはありますか?C#でのアスペクト指向プログラミング
PS:私はちょうどそれの周りにあなたの頭を取得しないライブラリやフレームワーク.NETのために利用できるまたはC#:)
、AOプログラミングを理解しておく必要があります:それは、次のようなフックイベントへの能力でありますオブジェクトの作成、プロパティの設定などを行い、一般的な機能をそれらに関連付けます。これには、関連するコンテキストが設定されます。
C#にはこのための組み込み機能がないため、「バイトコードウィービング」(つまり実際に呼び出しを行い、クラスに直接コードを書き込む)を行うには、PostSharpのようなフレームワークが必要です。
サイドノートでは、http://www.postsharp.org/には、それが何であり、どのような用途であるかを詳しく説明しています。 – RCIX
はいポストシャープは良いことです(良いサイトもあります) – TheVillageIdiot
ランタイムエミットも良いです。 Unityと他の人は、反射を使ってメソッドを傍受します。また、.netはJeanのようにContextBoundObjectsフックを持っています。残念ながら、コンテキストにバインドされたオブジェクトでは、巨大なperfヒットがあります。 – AbdElRaheim
アスペクト指向プログラミングとは、コードでこれらの機能を実装するのではなく、コードに織り交ぜるロギングまたはセキュリティ/アクセス制御機能を定義できるメタレベルを持つことを意味します。だから、一次元ではなく、二次元をプログラムする必要があります。
私はこれが非常に控えめに聞こえるかもしれませんが、それを理解すれば簡単です。
AOPは、呼び出しを傍受してバックグラウンドで処理するプロキシクラスで動作することがよくあります。
下のリンクは、あなた自身のAOPフレームワークをコード化する方法を示しています。残念ながら、消費するすべてのクラスは、MarshalByRefObject
(ContextBoundObject
まで)から継承する必要があります。
http://www.developerfusion.com/article/5307/aspect-oriented-programming-using-net/3/
を使用するためのだまされやすい人のように私には思える(...、例外処理をトレースし、タイミングをログ)AOPを実装する方法を説明していますhttp://stackoverflow.com/questions/325558/aspect-oriented-programming-examples – Graviton
[Aspect Oriented Programming](http://izlooite.blogspot.com/2010/06/aspect-oriented-programming.html#comment-フォーム) –
.NETのAOPをチェックしてください - http://manning.com/groves(恥知らずな自己宣伝ですが、 levant!) –