⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 serialization.vb

📁 C# 版本的一个三层商业架构
💻 VB
字号:
<TestFixture()> _
Public Class Serialization

  <Test()> _
  Public Sub Clone()
    Session.Clear()
    Dim root As New SerializationRoot
    root = CType(root.Clone, SerializationRoot)
    Assert.AreEqual(3, Session.Count, "Incorrect number of events fired - should have been 3")
    Assert.AreEqual(True, Session("Serialized"), "Serialized not called")
    Assert.AreEqual(True, Session("Deserialized"), "Deserialized not called")
    Assert.AreEqual(True, Session("Serializing"), "Serializing not called")
  End Sub

  <Test()> _
  Public Sub SerializableEvents()
    Session.Clear()
    Dim root As New SerializationRoot
    Dim handler As New TestEventSink

    AddHandler root.IsDirtyChanged, AddressOf OnIsDirtyChanged
    AddHandler root.IsDirtyChanged, AddressOf SharedOnIsDirtyChanged
    AddHandler root.IsDirtyChanged, AddressOf PublicSharedOnIsDirtyChanged
    AddHandler root.IsDirtyChanged, AddressOf handler.OnIsDirtyChanged
    handler.Reg(root)

    root.Data = "abc"
    Assert.AreEqual("abc", root.Data, "Data value not set")

    Assert.AreEqual("OnIsDirtyChanged", Session("OnIsDirtyChanged"), "Didn't call local handler")
    Assert.AreEqual("SharedOnIsDirtyChanged", Session("SharedOnIsDirtyChanged"), "Didn't call shared handler")
    Assert.AreEqual("PublicSharedOnIsDirtyChanged", Session("PublicSharedOnIsDirtyChanged"), "Didn't call public shared handler")
    Assert.AreEqual("Test.OnIsDirtyChanged", Session("Test.OnIsDirtyChanged"), "Didn't call serializable handler")
    Assert.AreEqual("Test.PrivateOnIsDirtyChanged", Session("Test.PrivateOnIsDirtyChanged"), "Didn't call serializable Private handler")

    root = CType(root.Clone, SerializationRoot)

    Session.Clear()
    root.Data = "xyz"
    Assert.AreEqual("xyz", root.Data, "Data value not set")

    Assert.AreEqual(Nothing, Session("OnIsDirtyChanged"), "Called local handler after clone")
    Assert.AreEqual(Nothing, Session("SharedOnIsDirtyChanged"), "Called shared handler after clone")
    Assert.AreEqual("PublicSharedOnIsDirtyChanged", Session("PublicSharedOnIsDirtyChanged"), "Didn't call public shared handler after clone")
    Assert.AreEqual("Test.OnIsDirtyChanged", Session("Test.OnIsDirtyChanged"), "Didn't call serializable handler after clone")
    Assert.AreEqual(Nothing, Session("Test.PrivateOnIsDirtyChanged"), "Called serializable Private handler after clone")

  End Sub

  Private Sub OnIsDirtyChanged(ByVal sender As Object, ByVal e As EventArgs)
    Session("OnIsDirtyChanged") = "OnIsDirtyChanged"
  End Sub

  Private Shared Sub SharedOnIsDirtyChanged(ByVal sender As Object, ByVal e As EventArgs)
    Session("SharedOnIsDirtyChanged") = "SharedOnIsDirtyChanged"
  End Sub

  Public Shared Sub PublicSharedOnIsDirtyChanged(ByVal sender As Object, ByVal e As EventArgs)
    Session("PublicSharedOnIsDirtyChanged") = "PublicSharedOnIsDirtyChanged"
  End Sub

End Class

<Serializable()> _
Public Class TestEventSink

  Public Sub Reg(ByVal obj As BusinessBase)
    AddHandler obj.IsDirtyChanged, AddressOf PrivateOnIsDirtyChanged
  End Sub

  Private Sub PrivateOnIsDirtyChanged(ByVal sender As Object, ByVal e As EventArgs)
    Session("Test.PrivateOnIsDirtyChanged") = "Test.PrivateOnIsDirtyChanged"
  End Sub

  Public Sub OnIsDirtyChanged(ByVal sender As Object, ByVal e As EventArgs)
    Session("Test.OnIsDirtyChanged") = "Test.OnIsDirtyChanged"
  End Sub

End Class


<Serializable()> _
Public Class SerializationRoot
  Inherits BusinessBase

  Private mData As String = ""

  Public Property Data() As String
    Get
      Return mData
    End Get
    Set(ByVal Value As String)
      If mData <> Value Then
        mData = Value
        MarkDirty()
      End If
    End Set
  End Property

  Protected Overrides Sub Serialized()
    Session.Add("Serialized", True)
  End Sub

  Protected Overrides Sub Serializing()
    Session.Add("Serializing", True)
  End Sub

  Protected Overrides Sub Deserialized()
    Session.Add("Deserialized", True)
  End Sub

End Class

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -