问题标签 [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 投票
3 回答
4567 浏览

c# - PostSharp - il weaving - 想法

我正在考虑使用 Postsharp 框架来减轻应用程序方法日志记录的负担。它基本上允许我用日志属性装饰方法,并在编译时将所需的日志代码注入到 il.xml 中。我喜欢这个解决方案,因为它可以将噪音排除在设计时间码环境之外。有什么想法、经验或更好的选择吗?

0 投票
4 回答
1532 浏览

c# - 使用 PostSharp 拦截对 Silverlight 对象的调用?

我正在使用 PostSharp 拦截对我不拥有的对象的方法调用,但我的方面代码似乎没有被调用。Silverlight 区域的文档似乎很松散,所以我很感激你们能提供的任何帮助:)

我有一个看起来像这样的属性:

我的 AssemblyInfo 中的一个条目如下所示:

所以,我对你的问题是......我错过了什么?匹配属性目标下的方法调用似乎不起作用。

0 投票
3 回答
14626 浏览

.net - 什么是 IL 编织?

我今天刚看到Ayende关于 PostSharp 的帖子。我下载了代码并试用了一下,我认为这是我见过的最酷、最容易使用的 AOP 处理方式。

Ayende 在他的帖子中说 PostSharp 通过IL Weaving实现了它的魔力。现在,在某个抽象层面上,我可以推断出这意味着什么,但我想看看是否有更详细的答案。不幸的是,很长一段时间以来第一次,谷歌对我来说是空的。所以我认为这对于 StackOverflow 来说是一个很好的问题(因为我已经订阅 Jeff 的博客几年了,并且知道这个网站正在做它的事情)。

那么 IL Weaving 究竟是什么以及它是如何实现的呢?

0 投票
1 回答
2542 浏览

c# - 属性设置器的 PostSharp 方面,调用通用方法

我们有一个用于一些类似 MVC 的系统的基础对象,其中后代中的每个属性都写成这样:

这样做既是为了调试目的,也是为了通知和验证目的。我们使用 getter 来提醒我们代码明确标记了要读取的内容(以便基类能够仅在这些属性更改时调用它)并出错的情况,我们使用 setter用于属性更改通知、脏标志处理、验证等。

为简单起见,我们假设这些方法的实现如下所示:

当然,这两个都有更多的代码,但是这段代码与我的问题无关,或者至少我希望如此。如果是,我将修改问题。

无论如何,我想在自动属性上编写一个自动为我实现调用的 PostSharp 方面,如下所示:

有没有人知道我将如何去做?

我自己制作了 OnMethodBoundaryAspect 类,但是使用 ref 参数调用泛型实现的艺术让我望而却步。

这是两个类,我想扩充 TestObject 类以自动调用属性获取和设置的正确方法。


编辑:也发布在PostSharp 论坛上。

0 投票
1 回答
1258 浏览

c# - 如何在postsharp中创建一个方面检查类中所有方法的空引用

如何在 postsharp 中创建一个方面检查类中所有方法的空引用。

然后,方面 [MethodParameterNullCheck] 应展开为以下代码:

如果您能给我一个示例实现,让我开始使用 postsharp 进行 AOP,我将不胜感激。

0 投票
2 回答
1645 浏览

c# - 使用 PostSharp 添加 OnException 属性

我正在探索一些 AOP,似乎使用 .NET PostSharp 是要走的路。

发生异常时,我想对数据库进行一些简单的日志记录。但是,我发现很难找到任何超越基础的使用 PostSharp 的真实可靠示例。我尝试了以下方法:

然后将[LogException]属性附加到方法

但我得到一个编译错误:

我不得不承认我对此很陌生,但这似乎是一个有趣的概念,我认为我只需要指出正确的方向

0 投票
6 回答
7867 浏览

.net - 有 Postsharp 生产经验的人吗?

有没有人在生产环境中使用过 Postsharp AOP 框架?有什么陷阱吗?为了做一些日志记录等,Postsharp 可以与 Log4Net 结合使用吗?

任何有关将 Postsharp 与 Web 应用程序和/或 Log4Net 一起使用的教程都将受到高度赞赏。

0 投票
3 回答
5217 浏览

c# - Cool PostSharp方面

我正在寻找有趣的 PostSharp 方面 - 任何您认为有用且不介意分享的内容。

0 投票
1 回答
817 浏览

aop - 编译时代码注入

最近,我一直在使用PostSharp。它是一个 AOP 框架,允许我们进行编译时代码注入。您可以只引用 PostSharp 程序集,在您的代码中使用它,编译后,您将获得一个已将所需代码注入其中的程序集。我试图找出 PostSharp 是如何将自己集成到 Visual Studio 的编译过程中并更改代码的,但直到现在还没有结果。

有没有办法让 Visual Studio 在编译期间或之后运行一些代码,而不使用项目的后期构建任务或任何插件?

0 投票
3 回答
1818 浏览

c# - CIL:“操作可能会破坏运行时”异常

我一直在玩 PostSharp,但遇到了一个令人讨厌的问题。

在 Silverlight 程序集中遵循 IL:

触发 System.Security.VerificationException:操作可能会破坏运行时。例外。反射器解析它OK。它有什么问题?

更新 1 代码的工作原理如下:

更新 2 我在 setter 本身中得到了指定的异常

更新 3 作为 callvirt (NotifyPropertyChanged) 进行非静态调用没有帮助

更新 4 注释掉(出于测试目的)代码:

并将 L_001e: brtrue.s L_002b 替换为 L_001e: br.s L_002b 可以解决问题,但它是无条件返回 - 不是我想要的。

更新 5 如果我使用 C# 编译器来模拟所需的行为(我仍然需要使用 Postsharp 来做到这一点),我会得到以下 IL:

请注意有细微的差别 - 额外的 br.s 在 L_0016 处跳转和一些奇怪的跳转 L_001e: brtrue.s L_002b。在编译器版本中,我可以直接跳转到 ret。