gpt4 book ai didi

c# - Postsharp:从一个方面访问已经应用的方面

转载 作者:行者123 更新时间:2023-11-30 23:00:42 28 4
gpt4 key购买 nike

我创建了一个小的方面层次结构。示例:

public abstract class MyBaseAspectAttribute : Aspect, IAspectProvider
{
...
public IEnumerable<AspectInstance> ProvideAspects( object targetElement )
{
}
...
}

我想知道在 ProvideAspects 内部是否有任何方法可以查明是否以及哪些其他方面已经应用于 targetElement - 并获得对方面实例的引用。

有点像

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/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com