使用PostSharp在方法上添加属性

时间:2015-12-29 06:39:18

标签: postsharp

我有一个方面,通常使用Postsharp构建的Cache。 我遇到的问题是,当PostSharp编写代码时,结果代码将不再具有该方法的属性,这有几个原因:

  1. 它不再有用,因为它适用于PostSharp
  2. 它可以在程序集级别应用,并且受影响的方法没有[CacheAttribute]以
  3. 开头

    但是..我正在尝试进行一些单元测试,我希望看到结果代码的属性,所以我可以说: "检查方法x是否有一个缓存属性,表示它应该缓存50秒"。这将是我的所有单元测试,而不是每次都模拟缓存管理器。方面应用于我想要的任意数量的方法,我可以单独测试方面,只检查是否通过检查属性来应用缓存。

    那么,我怎么能说Postsharp在受影响的方法上编织一个属性,这与用于编写代码的CacheAttribute相同?好的,它可以是其他属性,因此它们不会发生冲突,但必须具有CacheAttribute的属性。

    http://www.postsharp.net/blog/post/PostSharp-Principals-Day-12-e28093-Aspect-Providers-e28093-Part-1 - 它告诉我如何在字段和属性上添加属性,而不是在方法上添加属性。

    干杯。

1 个答案:

答案 0 :(得分:0)

我找到了解决方案,不需要自己添加新属性。 Postsharp通过允许您在多播属性上添加PersistMetadata - true来解决此问题:

[MulticastAttributeUsage(PersistMetaData = true)]
public class CacheAttribute : MethodInterceptionAspect
{...}

神奇地工作。