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

此外,属性在任何情况下都不会修改或更改代码......所以应用属性没有效果,除非没有人检查这个属性......而且编译也不是问题......

您可以尝试将 PostSharp 与安全或纯 c++/CLI 代码一起使用,请参阅 /clr 编译器选项。但在这种情况下,使用 C++/CLI 通常毫无意义......

于 2013-08-10T10:03:00.710 回答