【发布时间】:2009-09-15 09:37:21
【问题描述】:
PostSharp 给出这个错误:
PostSharp:无法应用 OnMethodInvocation 方面 (...) 与 在摘要上编织目标站点或 外部方法“...”。考虑 从这个方法中排除方面 或使用调用站点编织。
建议的呼叫站点编织对我来说不是一个合适的解决方案。有没有办法为抽象方法添加前/后处理?
【问题讨论】:
PostSharp 给出这个错误:
PostSharp:无法应用 OnMethodInvocation 方面 (...) 与 在摘要上编织目标站点或 外部方法“...”。考虑 从这个方法中排除方面 或使用调用站点编织。
建议的呼叫站点编织对我来说不是一个合适的解决方案。有没有办法为抽象方法添加前/后处理?
【问题讨论】:
我建议你使用方面继承。方面将自动添加到所有实现抽象方法的方法中。
有关详细信息,请参阅 MulticastAttribute.AttributeInheritance 或 MulticastAttributeUsageAttribute.Inheritance,或 official documentation。
【讨论】:
这当然是不可能的——你将如何使用抽象方法执行目标站点编织,一个没有任何代码的方法?您当然可以使用实现该方法的所有派生类型执行目标站点编织,但这需要您控制这些类型。或者,您可以使方法成为非抽象和虚拟方法,并要求派生类型来调用基本实现。
【讨论】: