问题标签 [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.

0 投票
1 回答
327 浏览

postsharp - 如何使用 PostSharp 创建一个切入点来拦截类中的所有方法?

我尝试过使用 AttributeTargetTypes,但它不起作用。我错过了什么?

0 投票
1 回答
305 浏览

c# - 如何使用带有最小起订量的 PostSharp?

我们正在尝试使用 PostSharp,更具体地说是 OnMethodInvocationAspect,来拦截类的方法。

代码运行良好,但是在使用 MOQ 进行测试时,它似乎弄乱了我的模拟。

如果我删除这些方面,所有测试都会成功。但是,如果我重新打开这些方面,则不会满足对 MOQ 模拟的期望。

这是从我们的一个单元测试中截取的片段:

关于会发生什么的任何想法?

0 投票
1 回答
673 浏览

mono - 有人在 Mono 下使用过任何 AOP 产品吗?

我正在考虑在我的一个项目中使用 PostSharp。复杂的因素是我需要 PostSharp 在 Windows x64 和 Linux x64/Mono 上工作。

根据 PostSharp 的可用信息,您可以在 Windows/.NET 上编译并在 .NET 和 Mono 下运行。

问题是:我可以在 Linux/Mono 上执行 PostSharp 构建吗?

0 投票
2 回答
1572 浏览

c# - System.AccessViolationException 与动态代理生成

我们正在使用 PostSharp 注入缓存功能,我们只在使用它时才看到这个问题。当我们使用 Spring 时,问题似乎消失了。

任何帮助将不胜感激,因为这个问题很难复制。我在下面包含了堆栈跟踪:

0 投票
1 回答
1484 浏览

.net - .NET 条件编译器符号和单元测试库

我的团队有一组针对我们的应用程序代码运行的单元测试库——不幸的是,它们抛出(意外)异常。这样做的原因是我们的日志记录代码被调用并且对象没有被设置。日志代码通过我们使用 PostSharp 设置的方法属性执行(在方法主体执行之前和之后调用)。不应调用该属性。

这是 PostSharp 帮助我们的地方:它寻找一个条件编译器指令 (SKIPPOSTSHARP),它告诉它不要执行。换句话说,如果我们在执行单元测试时定义指令,那么我们就能够独立于日志记录方面来测试所需的代码——成功地避免了不必要的依赖和复杂的模拟代码。

这很棒!除了一个问题......为我们的测试项目定义的条件编译器指令不会为正在测试的项目定义 - 这意味着我们的测试代码仍然使用该属性并且我们的测试都失败了。

是否可以仅在运行单元测试时在整个解决方案中定义编译器指令?即使我们没有将它应用于整个解决方案,是否只能在我们运行单元测试时将指令应用于特定项目(这同样适用)?

我也有兴趣看到关于这种方法的意见(我们正试图通过 AOP 代码实现分离和可伸缩性,但随着我们的进展,似乎确实有一些额外的障碍让我们跳过)。

注意:我在这里不是在谈论集成测试,只是单元测试。我们只想测试特定的单元,我们不关心日志代码是否有效——它会被其他单元测试(工作正常)测试。

0 投票
2 回答
2092 浏览

java - AspectJ 和 PostSharp 之间的功能差异是什么?

有谁知道 AspectJ 和 PostSharp 之间的 AOP 特性有哪些不同(是的,我知道它们适用于不同的语言和平台)?

我试图了解 AspectJ 允许 PostSharp 不允许的类型,反之亦然。

0 投票
2 回答
563 浏览

c# - 在属性 C# (3.5) 上隐藏继承的命名参数

我正在使用 PostSharp 向我的属性添加一些编译时逻辑 - 在一次情况下[IndexedCategory ("CatName", CatIndex)]。问题来了,因为IndexedCategory源自CompoundAspect- 它具有合理数量的命名参数。

有什么方法可以防止这些被智能访问/显示?

干杯

0 投票
2 回答
314 浏览

c# - 在C#中使用AOP检测是否使用了返回值

这与我的另一个问题有关,但这次非常具体。是否可以使用 AOP(尤其是 PostSharp)来检测是否使用了函数的返回值?例如

请注意,应针对此特定调用执行检测,而不是针对一般函数执行检测。

我从未使用过 AOP/PostSharp,所以即使我在 PostSharp 的文档中找不到答案,我也不能确定它不存在。不过,我并不坚持使用 PostSharp。我可以使用任何库,只要它能完成这项工作。

0 投票
1 回答
1046 浏览

c# - MethodExecutionEventArgs.Method 上的空引用异常使用 PostSharp 和多个 Web 服务项目

我正在使用 PostSharp 记录应用程序程序集中每个方法的进入和退出。此程序集在 GAC 中进行了严格命名、版本控制和注册。

然后由 IIS 内不同虚拟目录中托管的 2 个 Web 服务项目共享。当 WebServiceProject1 调用拦截器的 OnEntry/OnExit 方法时,它工作正常,但是当它们被 WebServiceProject2 调用时,传递给拦截器的 MethodExecutionEventArgs.Method 值似乎为空,我得到一个 NullReferenceException。

如果重新启动 IIS 并按 WebServiceProject2、WebServiceProject1 的顺序调用 Web 服务项目,那么第一个调用的项目再次起作用,另一个以相同的方式抛出 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但那里是明显的区别。

今天我将尝试构建一个独立的应用程序来证明这一点。

0 投票
2 回答
534 浏览

c# - 预处理 C# - 检测方法

我需要能够预处理多个 C# 文件作为项目的预构建步骤,检测方法的开始,并在方法的开始,在任何现有代码之前插入生成的代码。但是,我在检测方法的打开时遇到问题。我最初尝试使用正则表达式进行匹配,但最终误报太多。

我会使用反射,但 MethodInfo 类不引用原始源中的点。

编辑:我在这里真正想做的是支持方法的前置条件,该前置条件代码由方法上的属性确定。我最初的想法是我可以寻找方法的开头,然后插入生成的代码来处理前置条件。

有一个更好的方法吗?如果需要,我愿意创建 Visual Studio 插件。

这是一个 .NET 2.0 项目。

干杯