現在、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 を混合モード クラスで動作させるために必要な特別な手順はありますか?