【发布时间】:2012-11-26 04:59:40
【问题描述】:
我正在尝试设置 PostSharp aspect RunOutOfProcessAttribute 以便它适用于:
- 所有公共方法
- 标有
DoSpecialFunctionAttribute的任何方法,无论成员可访问性如何(公共/受保护/私有/其他)。
到目前为止,我的RunOutOfProcessAttribute是这样定义的:
[Serializable]
[MulticastAttributeUsage(MulticastTargets.Method, TargetMemberAttributes = MulticastAttributes.Public)]
[AttributeUsage(AttributeTargets.Class)]
public class RunOutOfProcessAttribute : MethodInterceptionAspect
{
public override void OnInvoke(MethodInterceptionArgs args)
{
...
}
}
已经存在的MulticastAttributeUsageAttribute 应该满足上述标准 1,但我不知道如何满足标准 2,而不是将现有方面的行为简单地复制到新属性中。
无论成员可访问性如何(public/protected/private/whatever),我如何将此方面应用于任何标有DoSpecialFunctionAttribute 的方法?
【问题讨论】:
-
我对为什么需要这样做感到困惑。如果您已经有了
DoSpecialFunctionAttribute,为什么不在该属性中包含执行此操作的函数呢?而不是创造另一个方面。 -
我希望能够将
RunOutOfProcessAttribute放在一个类上,因为它更多地定义了类行为而不是方法行为。除了标记为DoSpecialFunctionAttribute的任何受保护方法之外,RunOutOfProcessAttribute还应该对 所有 公共类方法进行操作。DoSpecialFunctionAttribute不会是一个方面。