AOP(Aspect Oriented Programming)とMonoTouch(MonoDevelopとの併用)がサポートされているかどうかは疑問でした。AOP with MonoTouch
これまでのところ、MonoDevelopをサポートするツールは見つかりませんでした。私が見る限り、PostSharpのようなツールはサポートされていません。
AOP(Aspect Oriented Programming)とMonoTouch(MonoDevelopとの併用)がサポートされているかどうかは疑問でした。AOP with MonoTouch
これまでのところ、MonoDevelopをサポートするツールは見つかりませんでした。私が見る限り、PostSharpのようなツールはサポートされていません。
Android用のMono(Visual Studioを使用)でPostSharpを使用できるようになりました。私はMonoTouchを使用していませんが、とにかく試してみてください。http://mgroves.com/monodroid-with-postsharp/
ダイナミックコード生成に依存しないツールはMonoTouchで動作する必要があります。 IIRC PostSharpはそのようなツールです。つまり、結果を得るためにILを修正します。
MonoTouch(他の.NETプラットフォーム、Android用Monoを含む)よりも制限が厳しい理由は、iOSではコード生成が許可されていないため、デバイスでJITできないからです。つまり、すべてのMonoTouchアプリケーションをAOT(前もってコンパイル)する必要があります。
ツールは、の作業が機能するとは限りません。例えば。ツールはOSX上で実行可能でなければならず、これをビルドに統合する必要があります(C#コンパイル後でAOTコンパイルの前に)。後であなたのプロジェクトをビルドするには、スクリプト/ Makefileを使用する必要があります。
私は最近、StaticProxy.FodyというFodyアドインを作成しました。このアドインは、コンパイル時にクラスに傍受コードを置き、インターフェイスを自動実装することもできます。これは多かれ少なかれ、例えば城の動的プロキシ "ターゲットなしのインターフェースプロキシ"と "ターゲットのインターフェースプロキシ"と "クラスプロキシ"が提供するものです。 しかし、[StaticProxy]
属性で織り込まれるべきインターフェイス/クラスをマークする必要があるという点で制限があることに注意してください。したがって、これを追加できるタイプ(つまり、あなたのコントロールの下にあるソース)をインターセプトすることしかできません。
また、コンストラクタ引数を追加するため、依存性注入コンテナの使用は基本的に必須です( "new Foo(..)"呼び出しが中断されます)。私はすでにninjectと統一のための拡張機能を作成しました:
nugetパッケージが利用可能であり、誰かがMonoTouchで/ MonoDroidの統合をテストすることができれば私は非常にそれを歓迎します。私は現在、ナゲットパッケージを正しく作成していないのではないかと心配しています。
また、自動工場実装(ninjectの ".ToFactory()"バインディングなど)も追加する予定です。
これは、Silverlight DLLを使用できるためです。 MonotouchプロジェクトでこのDLLをMonoDevelopで参照することはできません。 –