5

AOP (アスペクト指向プログラミング) と MonoTouch (したがって MonoDevelop) がサポートされているかどうか疑問に思っていました。

これまで、MonoDevelop をサポートするツールを見つけることができませんでした。私の知る限り、PostSharp などのツールはサポートされていません。

4

3 に答える 3

3

PostSharp を Mono for Android (Visual Studio を使用) で動作させることができました。私は MonoTouch を使ったことはありませんが、とにかく試してみてください: http://mgroves.com/monodroid-with-postsharp/

于 2012-04-04T13:14:40.633 に答える
2

動的コード生成に依存しないツールは、MonoTouch で動作するはずです。IIRC PostSharpはそのようなツールです。つまり、IL を変更して結果を取得します。

MonoTouch が (Mono for Android を含む他の .NET プラットフォームよりも) 制限が厳しい理由は、iOS ではコード生成が許可されていないため、デバイスで JIT を実行できないためです。これは、すべての MonoTouch アプリケーションを AOT (事前に) コンパイルする必要があることを意味します。

ツール機能するという事実は、それが機能するという意味ではないことに注意してください。たとえば、ツールは OSX 上で実行できる必要があり、これをビルドに統合する必要があります (C# コンパイル後、AOT コンパイル前)。後者では、スクリプト/Makefile を使用してプロジェクトをビルドする必要がある場合があります。

于 2012-04-04T13:24:48.400 に答える
2

私は最近、StaticProxy.Fody というFodyアドインを作成しました。これは、コンパイル時に傍受コードをクラスに織り込み、インターフェースを自動実装することもできます。これは多かれ少なかれ、キャッスル ダイナミック プロキシの「ターゲットのないインターフェイス プロキシ」と「ターゲットのあるインターフェイス プロキシ」と「クラス プロキシ」が提供するものです。ただし、[StaticProxy]属性によって織り込まれる必要があるインターフェイス/クラスをマークする必要があるという点で制限があることに注意してください。したがって、これを追加できるタイプのみをインターセプトできます (==> あなたの管理下にあるソース)。

また、コンストラクター引数を追加するため、依存性注入コンテナーの使用は基本的に必須です ("new Foo(..)" 呼び出しを中断します)。ninject と unity の拡張機能は既に作成しています。

nuget パッケージが利用可能であり、誰かが MonoTouch/MonoDroid 統合をテストできれば大歓迎です。現在、ナゲットパッケージを正しく作成していないのではないかと心配しています。

また、オート ファクトリの実装 (ninject の ".ToFactory()" バインディングなど) を追加することも計画しています。

于 2014-05-04T16:14:21.800 に答える