2011-04-08 6 views

答えて

29

あなたは箱から出してAOPを備え、さまざまなIOCコンテナを試すことができる(例えばSpring.Net強力なAOPのfreameworkがあり、城ウィンザーはInterceptorsを持っているので、Unityはない)、それらまたはPostsharpのようなIL-ウィーバーを使用してSnapを使用しています。開発の初期段階ではあるが - - 有望に見える

更新は 私はちょうど「Afterthought」を知りました。 Postsharpの代わりにOpenSourceを目指しています。

そして、私は同様にIL織りが可能であるMono.Cecilを言及するのを忘れてしまった:簡単な英語で

を、セシルと、あなたは、既存のマネージアセンブリをロード含まれるすべての種類を参照し、その場でそれらを変更することができます変更されたアセンブリをディスクに戻して保存します。

Fodyは、製織にCecil toを使用し、ビルドフェーズでそのステップを統合することができます。いくつかの便利なアドイン(例えば、INotifyPropertyChangedを実装するか、コンパイル後にパブリックプロパティからToStringメソッドを生成します)が付属しています。

5
+0

+1 PostSharpの場合、非常に強力で使いやすいです。 –

8

私はまったく同じことを何年も見てきましたが、私は自信をもって、.Netの中には、あらゆる面でAspectJに匹敵するものは何もないと自信を持って伝えています。

.netの世界では、ダイナミックプロキシがよくAOPメカニックとして使用されていることがわかりました。 PostsharpやAfterthoughtsのような実際のIL織りをサポートするツールはほんのわずかですが、どちらもアスペクトオリエンテーションを行う方法として属性を使った宣言型プログラミングがあります。彼らはどちらも使いやすいですが、AOPの背景(AspectJ)から来た場合は、AOPと呼ぶのかどうかはわかりません。

これまでのところ、「真の」AOPパターン(正式に10年前に定義された、つまりポイントカット、ジョインポイント、アドバイス、アスペクトなど)の.Net実装は見られませんでした。おそらく、一般的なAOPであり、一般的にはIoCと属性で通常十分なロギング、トランザクション管理、例外ポリシーに限定されます。

ビジネスルールとドメイン主導型コードのAOPは、.Netのこの段階ではまだほとんど見られません(どんなツールでもサポートされていません)。

私はこのギャップ(http://sheepaop.codeplex.com)を埋めるようになったばかりの私が最近出会ったオープンソースプロジェクトがありますが、まだ非常に早いですが、AspectJ-ishの実装として期待しています。先ほど言いましたように、AspectJ(あなたの質問によると)とはまだ比較されませんが、ressemblanceは非常に明白であり、意図的です。

2

質問が.NETについてあるので、強力なメタプログラミング機能を持つNemerle言語を使用できます。

+1

Nemerleは、マクロ属性でC#ソースをコンパイルすることもできます。 この方法でC#でAOPを取得できます。 –

+0

NemerleコンパイラにはC#コンパイラが含まれていますか? – ironic

+0

はい、NemerleはC#のソースを解析してコンパイルできます。 .csファイルをプロジェクトに追加すると、それが動作します。さらに、VB.NetのようなNemerleコンパイラにフロントエンドを書くことができます。ソースはhttps://github.com/rsdn/nemerle/tree/master/snippets/csharp-parserです。 –

関連する問題