代码之家  ›  专栏  ›  技术社区  ›  Basic

监视类和子类中的所有事件

  •  0
  • Basic  · 技术社区  · 16 年前

    我想知道是否有人能帮我。我有一个控制台应用程序,我用它来调试我开发的各种组件。

    我希望每次在我实例化的对象或它实例化的任何东西中触发事件时都能够登录到控制台。我通常不会看到这些事件中的一些,因为它们会被进一步的链消耗)。理想情况下,我将能够记录所有公共和私人事件,但如果只有公共是可能的,我可以接受。

    我所寻找的信息与在异常中找到的信息类似-目标站点、源、堆栈跟踪等。。。

    我能通过思考来做到这一点吗?

    如果有人能告诉我这是否可行,也许能给我一些好的资源,我会非常感激。

    非常感谢

    要了解控制台应用程序,请执行以下操作:

    Sub Main()
        Container = ContainerGenerate.GenerateContainer()
        Dim TemplateID As New Guid("5959b961-b347-46bc-b1b6-cba311304f43")
        Dim Templater = Container.Resolve(Of Interfaces.Mail.IMailGenerator)()
        Dim MyMessage = Templater.GenerateMail(TemplateID, Nothing, Nothing)
        Dim MySMTPClient = Container.Resolve(Of SmtpClient)()
        MySMTPClient.Send(MyMessage)
        Finish()
    End Sub
    
    2 回复  |  直到 16 年前
        1
  •  1
  •   Scott Dorman    16 年前

    框架中没有任何内置内容允许您这样做。可以使用反射,尽管我不确定我会推荐它。以下代码显示如何获取类型的所有成员的列表:

      Try
         Dim myObject As New [MyClass]()
         Dim myMemberInfo() As MemberInfo
    
         ' Get the type of 'MyClass'.
         Dim myType As Type = myObject.GetType()
    
         ' Get the information related to all public member's of 'MyClass'. 
         myMemberInfo = myType.GetMembers()
    
         Console.WriteLine(ControlChars.Cr + "The members of class '{0}' are :" + ControlChars.Cr, myType)
         Dim i As Integer
         For i = 0 To myMemberInfo.Length - 1
            ' Display name and type of the concerned member.
            Console.WriteLine("'{0}' is a {1}", myMemberInfo(i).Name, myMemberInfo(i).MemberType)
         Next i
    
      Catch e As SecurityException
         Console.WriteLine(("Exception : " + e.Message.ToString()))
      End Try
    

    在循环中,需要确定成员是否是事件,如果是,则将事件处理程序挂接到该成员。