【问题标题】:VB.NET with PostSharp and inherited classes带有 PostSharp 和继承类的 VB.NET
【发布时间】:2012-12-17 17:58:25
【问题描述】:

我正在使用 PostSharp 来捕获在我的系统中生成的所有异常,其类为 OnMethodBoundaryAspect。它工作正常,但如果我需要在某些继承的类中获取异常,我在 VB.NET 中找不到解决方案。

MulticastAttributeUsageAttribute 类有一个带有一个 validOn 属性的构造函数,我只能设置 MultcastTargets。该类有一个名为Inheritance 的公共属性,但如果我在构造函数中设置它,它就没有效果。下面举个例子:B类继承了A类,A类中标注了属性Aspect,我需要A类能自动看到B类。

我该如何解决这个问题?

代码

<Serializable()> _
<AttributeUsage(AttributeTargets.Class)> _
<MulticastAttributeUsage(MulticastTargets.Method)> _
Public Class ExceptionsAttribute
    Inherits OnMethodBoundaryAspect

        Public Overrides Sub OnEntry(ByVal Args As PostSharp.Aspects.MethodExecutionArgs)
             MyBase.OnEntry(Args)
        End Sub

        Public Overrides Sub OnException(ByVal Args As PostSharp.Aspects.MethodExecutionArgs)
             MyBase.OnException(Args)
        End Sub

    End Class

    <Exceptions()> _
    Public Class A

        Public Sub MethodA()
        End Sub

    End Class

    Public Class B
        Inherits A

        Public Sub MethodB()
        End Sub

    End Class

A 类被 Exception 属性类注解。 B 类扩展 A 类,那么我需要 B 类自动查看,不需要用 Exception 属性类进行注释。

【问题讨论】:

    标签: .net vb.net inheritance postsharp


    【解决方案1】:

    解决了!!!我只需要像这样直接设置属性:

    <MulticastAttributeUsage(MulticastTargets.Method, Inheritance:=MulticastInheritance.Multicast)> 
    

    【讨论】:

      猜你喜欢
      • 2017-05-18
      • 1970-01-01
      • 1970-01-01
      • 2019-03-23
      • 1970-01-01
      • 2015-05-14
      • 2011-10-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多