我创建了一个小的方面层次结构。 示例:
public abstract class MyBaseAspectAttribute : Aspect, IAspectProvider
{
...
public IEnumerable<AspectInstance> ProvideAspects( object targetElement )
{
}
...
}
我想知道在 ProvideAspects 内部是否有任何方法可以查明是否以及哪些其他方面已应用于 targetElement - 并获取对 Aspect 实例的引用。
类似
PostShart.GetAspects(targetElement).OfType<MyBaseAspectAttribute>();
(我的意图:检查某个方面是否已经添加,如果是,则修改它)
PS:我确实以另一种方式解决了我的问题,但我如果这可能的话,它将是一个比我的更优雅和更有效的解决方案。
最佳答案
您可以使用方面存储库:
http://www.postsharp.net/blog/post/New-in-PostSharp-40-Aspect-Repository http://doc.postsharp.net/t_postsharp_aspects_iaspectrepositoryservice
如果要修改方面实例,则需要将实例存储在静态字段中存储的字典中。该字典可以从方面构造函数填充,因此它不仅涵盖 IAspectProvider
的情况,而且还涵盖该方面作为自定义属性应用时的情况。
关于c# - Postsharp:从方面访问已应用的方面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51450270/