問題タブ [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.
c# - インターセプト、解析、コンパイルする方法は?
これは私がしばらく解決するのに苦労してきた問題です。メソッド内のコードをコンパイル時にテンプレートから解析されたコードに置き換えるか(PostSharpが思い浮かびます)、動的プロキシを作成する方法(LinfuまたはCastle)が必要です。したがって、このようなソースコードが与えられます
これにコンパイルする必要があります
どのテクノロジーを使用するかは重要ではありません。PostSharpのImplementMethodAspectを試してみましたが、どこにも行きませんでした(経験不足のため)。Linfuフレームワークも調べました。誰かがこれを行うための他のアプローチや方法を提案できますか、私は本当に感謝します。私のプロジェクト全体はこれに依存しています。
仮定:
- コードはどのクラスにも表示できます。
- テンプレートコードには常に属性[テンプレート]の注釈が付けられます
- テンプレートメソッドは常に文字列を返します。
あるフォームから別のフォームへのコードの解析はすでに完了しています。今、私はそれを交換する方法が必要です。
「ビーファー」の例:
c# - 「PostSharp が CA1800:DoNotCastUnnecessarily について不平を言う」に対するこの修正は最良のものですか?
この質問は、キャストの「is」と「as」と、 CA1800 PostSharpルールに関するものです。私が考えた解決策が可能な限り最善のものなのか、それとも私には見えない問題があるのか を知りたい.
私はこのコードを持っています (OriginaL Code という名前で、関連する最小限に縮小されています)。関数 ValidateSubscriptionLicenceProducts は、SubscriptionLicence (Standard、Credit、TimeLimited の 3 つのタイプの可能性があります) の検証を試みます。
PostSharp は CA1800:DoNotCastUnnecessarily について文句を言います。その理由は、同じオブジェクトを同じ型に 2 回キャストしているためです。このコードは、最高の場合で 2 回 (StandardLicence の場合)、最悪の場合で 4 回 (TimeLimited Licence の場合) キャストします。ここではパフォーマンスに大きな影響がないため、ルールを無効にすることが可能であることはわかっていますが (これが私の最初のアプローチでした)、最善のアプローチを試みています。
これは"as"を使用した改良版です。CA1800 について文句を言う必要はありませんが、問題は常に 3 回キャストすることです (将来的に 30 種類または 40 種類のライセンスがある場合、パフォーマンスが低下する可能性があります)。
しかし、後で私は最高のものを考えました。これは私が使用している最終バージョンです。
クラス StandardSubscriptionLicence、CreditSubscriptionLicence、および TimeLimitedSubscriptionLicence を変更して、「tryparse」メソッドを使用する必要があります (以下のコードにコピーされています)。このバージョンでは、最低でも 1 回のみ、最大 3 回までキャストできると思います。改善2についてどう思いますか?それを行う最良の方法はありますか?
asp.net - メソッド名でlog4netをフィルタリングしています-完全に取得できません
log4net を使用して Web アプリの進行状況を記録し、Log4PostSharp を使用してすべてのメソッドを AOP 注入しています。これは、(ほぼ) すべてをログに記録するという望ましい効果があり、問題ありません。
JUST Page_Load メソッドをファイル/コンソールに記録する必要があります。これを行うために log4postsharp クラスを明らかにハムストリング化することはできますが、そうすると他のすべてのログが失われてしまいます。
StringMatch フィルターから始めて、log4net のフィルターを調べてきましたが、それはログに記録されているメッセージのみを調べており、メソッド名の後にいます。これにより、PropertyFilter が表示されましたが、まだ喜びはありません。したがって、私の log4net.config スニペットは次のとおりです。
ご覧のとおり、LocationInfo を介してログ イベントの MethodName にキーを入力しようとしていますが、まだすべてがログに記録されています。編集: コメントで述べたように、RTFM の後に追加した DenyAllFilter を含めました ;-)
誰でも手伝ってもらえますか?
ありがとうございました、
マイク K.
c# - 戻り値に適用される属性をどのように反映しますか?
次の点を考慮してください。
System.Reflection を使用して、メソッドの戻り値に NotNullAttribute 属性が適用されたことを確認するにはどうすればよいでしょうか? できない場合、 [return: ] 構文の背後にある目的は何ですか?
wcf - DataContractSerializer を使用する場合の PostSharp?
クラスに INotifyPropertyChanged を実装するアスペクトがあります。この側面には、次のものが含まれます。
これは、クラスを通常どおりにインスタンス化するときには問題なく機能しますが、DataContractSerializer を使用してクラスを逆シリアル化すると問題が発生します。これは、コンストラクターをバイパスします。これは、PostSharp 自体のセットアップ方法に干渉すると推測しています。これにより、インターセプトされたプロパティ セッターで NullReferenceException が発生しますが、カスタム OnPropertySet が呼び出される前に、LocationInterceptionArgs の設定が妨げられると推測しています。
他の誰かがこの問題に遭遇しましたか? それを回避する方法はありますか?
さらに調査を行ったところ、これを行うことで問題を解決できることがわかりました。
私は、オーケー、それはそれほど悪くないと思ったので、アスペクトでこれをやろうとしました:
残念ながら、メソッドを適切にインターセプトしても機能しません。InitializeCurrentAspects の呼び出しが適切に変換されていないと考えています。これは、アスペクト拡張クラス内ではなく、アスペクト内にあるためです。アスペクトを持ちたいすべてのクラスでこれを呼び出すことを心配する必要がないように、これをきれいに自動化できる方法はありますか?
.net - ビルド後にPostSharp参照を削除しますか?
ビルド中にpostsharpアセンブリへの参照を削除するためにpostsharpを取得することは可能ですか?
非常に小さなフットプリントが必要なexeファイルがあります。ポストシャープのコンパイル時ウィービングの一部を使用したいのですが、exeでPostSharp.dllをデプロイする必要はありません。
PostSharp 2(具体的には2.0.4.1074)を使用しています
postsharp - Postsharp インストーラーのバグ: .Net 2.0 が表示されない
PostSharp 1.5 および 2.0 には、「.NET Framework 2.0 がこのコンピューターに存在しません」というエラー メッセージが表示され、Windows 7 マシンにインストールできないという問題があります。
.net - PostSharp キャッシュ サンプルがサンプル ソリューションの外では機能しない
PostSharp の Cache サンプル プロジェクトは機能しますが、すべてのクラスをコピーして独自のソリューションで複製しようとすると、キャッシュが発生しません。しかし、ビルドは失敗しないので、何かが起こっているに違いありません。任意のヒント?
asp.net-mvc - asp.net mvc log4postsharp
こんにちは、ログの目的で log4post Sharp を使用しようとしています。これを起動して実行するための指示に従っていることを認識している限り、Postsharp をインストールしていません。むしろ、ライブラリ ファイルを取得し、cs proj ファイルをそれらのファイルを対象とするように中間化しました。 、マシンにポストシャープをインストールしようとしました。どちらの場合でも、私はこのエラーで終わります
エラー 5 タイプ「Log4PostSharp.LogAttribute」に必要なプラグイン「Log4PostSharp」が見つかりませんでした。
これをグーグルで調べてみましたが、この問題の痕跡はウェブ上のどこにもないようです。
私の実装と他の例との違いの 1 つは、使用するポストシャープ dll が PostSharp.public であることです。以前の dll を検索しようとしましたが、どこにも見つかりません。ダウンロードには PostSharp.dll しか含まれていません。これを起動して実行するために、手紙のすべての指示に従っているので、これが問題かもしれないと感じています. アイデアはありますか?
c# - Postsharp の AssemblyLoadException、参照された DLL からの引数に問題がありますか?
postsharp/AOP を使い始めたばかりです。C# 用のインストルメンテーションを作成して、ソフトウェアのピース用に作成したいくつかのアドインの使用状況を追跡したいと考えています。
OnMethodBoundaryAspect クラスを使用して、メソッドが呼び出されたときにいくつかのパラメーターの値を記録しようとしています。これらのパラメーターは、外部 DLL で参照される型です。
メソッドに属性を追加すると、プロジェクトがビルドされず、次のエラーが表示されます
エラー 2 未処理の例外 (2.0.5.1204、64 ビット、CLR 2.0、リリース): PostSharp.CodeModel.AssemblyLoadException: アセンブリのロード中にエラーが発生しました "C:\Program Files\Autodesk\Revit Structure 2011\Program\RevitAPI.dll": 可能性がありますファイルまたはアセンブリ 'revitapi、Version=0.0.0.0、Culture=neutral、PublicKeyToken=null' またはその依存関係の 1 つをロードしないでください。操作はサポートされていません。(HRESULT からの例外: 0x80131515)
REvitAPI.dll は、タイプを含むファイルです。また、属性をプロジェクトに追加するだけでテストしましたが、それをどのメソッドにも適用しませんでした。これもエラーの原因です。したがって、メソッド パラメーターの型自体には関係がないように見えますが、単にこの DLL の存在に関係しているようです。
誰かが以前にこの問題に遭遇したことがありますか、または誰かがこれに関する詳細情報を入手する正しい方向に私を向けることができますか?