問題タブ [postsharp]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
postsharp - PostSharp を使用してクラス内のすべてのメソッドをインターセプトするポイントカットを作成するにはどうすればよいですか?
AttributeTargetTypes を使用してみましたが、うまくいきません。私は何が欠けていますか?
c# - PostSharp を MOQ で使用するには?
PostSharp、より具体的には OnMethodInvocationAspect を使用して、クラスのメソッドをインターセプトしようとしています。
コードは正常に実行されますが、MOQ でテストすると、私のモックが台無しになっているようです。
アスペクトを削除すると、すべてのテストが成功します。しかし、アスペクトを元に戻すと、MOQ モックに対する期待は満たされません。
以下は、単体テストの 1 つから抜粋したスニペットです。
何が起こっているのかについてのアイデアはありますか?
mono - Mono で AOP 製品を使用した人はいますか?
プロジェクトの 1 つで PostSharp を使用することを検討しています。複雑な要因は、PostSharp が Windows x64 と Linux x64/Mono の両方で動作する必要があることです。
PostSharp の入手可能な情報によると、Windows/.NET でコンパイルし、.NET と Mono の両方で実行できます。
問題はこれです: Linux/Mono で PostSharp ビルドを実行できますか?
c# - 動的プロキシ生成を使用したSystem.AccessViolationException
PostSharpを使用してキャッシュ機能を注入していますが、この問題は使用している場合にのみ発生します。Springを使用すると、問題は解決したようです。
このように助けていただければ幸いです。問題を再現するのは非常に困難です。以下にスタックトレースを含めました。
.net - .NET条件付きコンパイラシンボルと単体テストライブラリ
私のチームには、アプリケーションコードに対して実行される一連の単体テストライブラリがあります。残念ながら、それらは(予期しない)例外をスローしています。これは、ロギングコードが呼び出されており、オブジェクトが設定されていないためです。ロギングコードは、PostSharp(メソッド本体の実行の前後に呼び出される)を使用して設定したメソッド属性を介して実行されます。属性は呼び出さないでください。
PostSharpが役立つのはここです。PostSharpは、実行しないように指示する条件付きコンパイラ指令(SKIPPOSTSHARP)を探します。言い換えると、単体テストの実行中にディレクティブを定義すると、ロギングの側面とは関係なく目的のコードをテストできます。途中で不要な依存関係や複雑なモックコードを回避することに成功します。
これは素晴らしい!1つのキャッチを除いて...テストプロジェクトに対して定義された条件付きコンパイラ指令は、テスト対象のプロジェクトに対して定義されません。つまり、テスト対象のコードは引き続き属性を使用し、テストはすべて失敗します。
単体テストを実行する場合にのみ、ソリューション全体でコンパイラ指令を定義することは可能ですか?ソリューション全体に適用していなくても、単体テストを実行している場合にのみ、ディレクティブを特定のプロジェクトに適用できますか(これも同様に機能します)?
このアプローチについての意見も興味があります(AOPコードを介して分離とスケーラビリティを実現しようとしていますが、進行するにつれてジャンプするための追加のフープがいくつかあるようです)。
注:ここでは、統合テストについて話しているのではなく、単体テストについてのみ説明しています。特定の単体をテストしたいだけで、ロギングコードが機能するかどうかは関係ありません。これは、他の単体テスト(正常に機能します)によってテストされます。
java - AspectJ と PostSharp の機能上の違いは何ですか?
AspectJ と PostSharp の AOP 機能の違いを知っている人はいますか (はい、異なる言語とプラットフォーム用であることはわかっています)。
私は、AspectJ がどのようなことを許可し、PostSharp が許可しないか、またはその逆を理解しようとしています。
c# - 属性C#(3.5)で継承された名前付きパラメーターを非表示にする
PostSharpを使用して、属性にコンパイル時ロジックを追加しています[IndexedCategory ("CatName", CatIndex)]
。IndexedCategory
から派生するため、問題が発生しますCompoundAspect
。これには、適切な数の名前付きパラメーターがあります。
これらがインテリジェンスによってアクセス/表示されるのを防ぐ方法はありますか?
乾杯
c# - C#でAOPを使用して、戻り値が使用されているかどうかを検出します
これは私の他の質問に関連していますが、今回は非常に具体的です。AOP(特にPostSharp)を使用して、関数の戻り値が使用されたかどうかを検出することは可能ですか?例えば
検出は、一般的な関数ではなく、この特定の呼び出しに対して実行する必要があることに注意してください。
私はAOP/PostSharpを使用したことがないので、PostSharpのドキュメントに答えが見つからなくても、そこにないかどうかはわかりません。ただし、PostSharpを主張することはありません。仕事ができる限り、どんなライブラリでも構いません。
c# - 複数の Web サービス プロジェクトで PostSharp を使用する MethodExecutionEventArgs.Method での Null 参照例外
PostSharp を使用して、アプリケーション アセンブリ内のすべてのメソッドのエントリと終了をログに記録しています。このアセンブリは厳密に名前が付けられ、バージョン管理され、GAC に登録されています。
次に、IIS 内の別々の仮想ディレクトリでホストされている 2 つの Web サービス プロジェクトによって共有されます。インターセプターの OnEntry/OnExit メソッドが WebServiceProject1 によって呼び出されると正常に動作しますが、WebServiceProject2 によって呼び出されると、インターセプターに渡される MethodExecutionEventArgs.Method 値が null のように見え、NullReferenceException が発生します。
IIS を再起動し、WebServiceProject2、WebServiceProject1 の順序で Web サービス プロジェクトを呼び出すと、最初に呼び出したプロジェクトが機能し、もう 1 つのプロジェクトが同じ方法で NullReferenceException をスローします。コードを以下に示します。
興味深いことに、アセンブリを GAC から削除し、Web サービス プロジェクトを \bin サブディレクトリのコピーから実行すると、正常に動作します。ただし、アプリケーションの別の部分が GAC にあるアセンブリに依存しているため、これを行いたくありません。同じ DLL のさまざまなバージョンをさまざまな場所に配置したくありません。
ここで説明されている問題に似ています: http://generatedbyatool.net/content/post/2009/07/27/PostSharp-Bug-or-How-To-Recycle-Your-Own-App-Pool.aspxしかし、は明らかな違いです。
今日は、これを証明するためにスタンドアロン アプリケーションを作成してみます。
c# - C# の前処理 - メソッドの検出
プロジェクトのビルド前のステップとして多数の C# ファイルを前処理し、メソッドの開始を検出し、既存のコードの前にメソッドの開始時に生成されたコードを挿入する機能が必要です。ただし、メソッドの開始を検出するのに問題があります。最初は正規表現で照合しようとしましたが、あまりにも多くの誤検知が発生しました。
リフレクションを使用しますが、MethodInfo クラスは元のソースのポイントを参照しません。
編集:ここで私が実際にやろうとしているのは、メソッドの事前条件をサポートすることです。その事前条件コードは、メソッドの属性によって決定されます。私が最初に考えたのは、メソッドの先頭を探し、事前条件を処理するために生成されたコードを挿入できるということでした。
これを行うより良い方法はありますか?必要に応じて、Visual Studio アドインを作成することにオープンです。
これは .NET 2.0 プロジェクトです。
乾杯