0

現在、AOP の PostSharp フレームワークを評価しています。私が使用するソリューションは、C# ライブラリと C++/CLI ライブラリで構成されています。C++/CLI ライブラリは、C# ライブラリのインターフェイスのいくつかの特殊な実装を提供します。

PostSharp と、PostSharp サイトの Undo/Redo デモをソリューションに追加しました。NuGet は、両方のプロジェクトが PostSharp-NuGet パッケージを使用していることを示しています。

C# コードで使用されるすべてのプロパティは問題なく機能します。すべての変更を追跡し、期待どおりに元に戻したりやり直したりできます。

ただし、C++/CLI コードでは何も起こりません。すべての変更は無視されます。アスペクトが注入されないか、どういうわけか無視されるようです。ただし、コードはカスタム属性セットでコンパイルされます。

using namespace PostSharp::Extensibility;
using namespace UndoDemo;

public ref class A
{
    [Undoable(AttributeInheritance = MulticastInheritance::Multicast)]
    virtual property int N;
};

Visual Studio 2012 Update 3 と PostSharp 3.0.33 を使用しています。

PostSharp は C++/CLI で動作しないことが知られていますか? または、PostSharp を混合モード クラスで動作させるために必要な特別な手順はありますか?

4

1 に答える 1

1

文書化されているように、C# と VB.NET のみをサポートしています: postSharp 3.0 Ducumentaion

また、属性はどのような状況でもコードを変更または変更しません...したがって、属性を適用しても、この属性をチェックしている人がいない限り効果がありません...また、コンパイルは問題ではありません...

安全なまたは純粋な C++/CLI コードで PostSharp を使用しようとする場合は、 /clr コンパイラ オプションを参照してください。しかし、このケースでは通常、C++/CLI を使用しても意味がありません...

于 2013-08-10T10:03:00.710 に答える