´╗┐Option Explicit On
Option Strict On

Imports System
Imports System.Xml

'**********************************************************************************************
'* Copyright (c) 2001-2018 Liquid Technologies Limited. All rights reserved.
'* See www.liquid-technologies.com for product details.
'*
'* Please see products End User License Agreement for distribution permissions.
'*
'* WARNING: THIS FILE IS GENERATED
'* Changes made outside of ##HAND_CODED_BLOCK_START blocks will be overwritten
'*
'* Generation  :  by Liquid XML Data Binder 16.1.2.8409
'* Using Schema: D:\Development2018\Liquid\Tools\DataBindingSamples\Samples\SimpleHierarchy\Schema\SimpleHierarchy.xsd
'**********************************************************************************************

Namespace SimpleHierarchyLib

    ''' <summary>
    ''' This class represents the ComplexType AddressType
    ''' </summary>
    <LiquidTechnologies.Runtime.Net45.XmlObjectInfo(LiquidTechnologies.Runtime.Net45.XmlObjectBase.XmlElementGroupType.Sequence, _
                                                    LiquidTechnologies.Runtime.Net45.XmlObjectBase.XmlElementType.Element, _
                                                    "AddressType", "", true, false, false)> _
    Public Partial Class AddressType
        Inherits SimpleHierarchyLib.XmlCommonBase

        #Region "Constructors"
        ''' <summary>
        '''    Constructor for AddressType
        ''' </summary>
        ''' <remarks>
        '''    The class is created with all the mandatory fields populated with the
        '''    default data. 
        '''    All Collection object are created.
        '''    However any 1-n relationships (these are represented as collections) are
        '''    empty. To comply with the schema these must be populated before the xml
        '''    obtained from ToXml is valid against the schema D:\Development2018\Liquid\Tools\DataBindingSamples\Samples\SimpleHierarchy\Schema\SimpleHierarchy.xsd
        ''' </remarks>
        Public Sub New()
            _elementName = "AddressType"
            Init()
        End Sub
        
        Public Sub New(ByVal elementName As String)
            _elementName = elementName
            Init()
        End Sub
        #End Region

        #Region "Initialization methods for the class"
        ''' <summary>
        '''    Initializes the class
        ''' </summary>
        ''' <remarks>
        '''    This creates all the mandatory fields (populated with the default data) 
        '''    All Collection object are created.
        '''    However any 1-n relationships (these are represented as collections) are
        '''    empty. To comply with the schema these must be populated before the xml
        '''    obtained from ToXml is valid against the schema D:\Development2018\Liquid\Tools\DataBindingSamples\Samples\SimpleHierarchy\Schema\SimpleHierarchy.xsd.
        ''' </remarks>
        Protected Overrides Sub Init()
            SimpleHierarchyLib.Registration.iRegistrationIndicator = 0 ' causes registration to take place
            _Forename = ""
            _Surname = ""
            _AddresLine1 = ""
            _AddresLine2 = ""
            _AddresLine3 = Nothing
            _AddresLine4 = Nothing
            _AddresLine5 = ""
            _PostCode = ""

' ##HAND_CODED_BLOCK_START ID="Additional Inits"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS

' Add Additional initialization code here...

' ##HAND_CODED_BLOCK_END ID="Additional Inits"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS
        End Sub

        #End Region

        #Region "ICloneable Interface"
        ''' <summary>
        '''    Allows the class to be copied
        ''' </summary>
        ''' <remarks>
        '''    Performs a 'deep copy' of all the data in the class (and its children)
        ''' </remarks>
        Public Overrides Function Clone() As Object
            Dim newObject As New SimpleHierarchyLib.AddressType(_elementName)
            Dim o As Object
            newObject._Forename = _Forename
            newObject._Surname = _Surname
            newObject._AddresLine1 = _AddresLine1
            newObject._AddresLine2 = _AddresLine2
            newObject._AddresLine3 = _AddresLine3
            newObject._AddresLine4 = _AddresLine4
            newObject._AddresLine5 = _AddresLine5
            newObject._PostCode = _PostCode

            o = Nothing

' ##HAND_CODED_BLOCK_START ID="Additional clone"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS

' Add Additional clone code here...

' ##HAND_CODED_BLOCK_END ID="Additional clone"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS

            Return newObject
        End Function
        #End Region

        #Region "Member variables"

        Protected Overrides Readonly Property TargetNamespace() As String
            Get 
                Return ""
            End Get
        End Property

        #Region "Attribute - Forename"
        ''' <summary>
        ''' Represents a mandatory Element in the XML document
        ''' </summary>
        ''' <remarks>
        ''' This property is represented as an Element in the XML.
        ''' It is mandatory and therefore must be populated within the XML.
        ''' It is defaulted to "".
        ''' </remarks>
        <LiquidTechnologies.Runtime.Net45.ElementInfoSeqPrimMnd("Forename", "", Nothing, LiquidTechnologies.Runtime.Net45.Conversions.ConversionType.type_string, Nothing, LiquidTechnologies.Runtime.Net45.WhitespaceUtils.WhitespaceRule.Preserve, "", -1, -1, "", "", "", "", -1, -1, -1, Nothing)> _
        Public Property Forename() As String
            Get 
                Return _Forename
            End Get
            Set(ByVal value As String)
                ' Apply whitespace rules appropriately
                value = LiquidTechnologies.Runtime.Net45.WhitespaceUtils.Preserve(value) 
                _Forename = value 
            End Set
        End Property
        Protected _Forename As String

        #End Region
    
        #Region "Attribute - Surname"
        ''' <summary>
        ''' Represents a mandatory Element in the XML document
        ''' </summary>
        ''' <remarks>
        ''' This property is represented as an Element in the XML.
        ''' It is mandatory and therefore must be populated within the XML.
        ''' It is defaulted to "".
        ''' </remarks>
        <LiquidTechnologies.Runtime.Net45.ElementInfoSeqPrimMnd("Surname", "", Nothing, LiquidTechnologies.Runtime.Net45.Conversions.ConversionType.type_string, Nothing, LiquidTechnologies.Runtime.Net45.WhitespaceUtils.WhitespaceRule.Preserve, "", -1, -1, "", "", "", "", -1, -1, -1, Nothing)> _
        Public Property Surname() As String
            Get 
                Return _Surname
            End Get
            Set(ByVal value As String)
                ' Apply whitespace rules appropriately
                value = LiquidTechnologies.Runtime.Net45.WhitespaceUtils.Preserve(value) 
                _Surname = value 
            End Set
        End Property
        Protected _Surname As String

        #End Region
    
        #Region "Attribute - AddresLine1"
        ''' <summary>
        ''' Represents a mandatory Element in the XML document
        ''' </summary>
        ''' <remarks>
        ''' This property is represented as an Element in the XML.
        ''' It is mandatory and therefore must be populated within the XML.
        ''' It is defaulted to "".
        ''' </remarks>
        <LiquidTechnologies.Runtime.Net45.ElementInfoSeqPrimMnd("AddresLine1", "", Nothing, LiquidTechnologies.Runtime.Net45.Conversions.ConversionType.type_string, Nothing, LiquidTechnologies.Runtime.Net45.WhitespaceUtils.WhitespaceRule.Preserve, "", -1, -1, "", "", "", "", -1, -1, -1, Nothing)> _
        Public Property AddresLine1() As String
            Get 
                Return _AddresLine1
            End Get
            Set(ByVal value As String)
                ' Apply whitespace rules appropriately
                value = LiquidTechnologies.Runtime.Net45.WhitespaceUtils.Preserve(value) 
                _AddresLine1 = value 
            End Set
        End Property
        Protected _AddresLine1 As String

        #End Region
    
        #Region "Attribute - AddresLine2"
        ''' <summary>
        ''' Represents a mandatory Element in the XML document
        ''' </summary>
        ''' <remarks>
        ''' This property is represented as an Element in the XML.
        ''' It is mandatory and therefore must be populated within the XML.
        ''' It is defaulted to "".
        ''' </remarks>
        <LiquidTechnologies.Runtime.Net45.ElementInfoSeqPrimMnd("AddresLine2", "", Nothing, LiquidTechnologies.Runtime.Net45.Conversions.ConversionType.type_string, Nothing, LiquidTechnologies.Runtime.Net45.WhitespaceUtils.WhitespaceRule.Preserve, "", -1, -1, "", "", "", "", -1, -1, -1, Nothing)> _
        Public Property AddresLine2() As String
            Get 
                Return _AddresLine2
            End Get
            Set(ByVal value As String)
                ' Apply whitespace rules appropriately
                value = LiquidTechnologies.Runtime.Net45.WhitespaceUtils.Preserve(value) 
                _AddresLine2 = value 
            End Set
        End Property
        Protected _AddresLine2 As String

        #End Region
    
        #Region "Attribute - AddresLine3"
        ''' <summary>
        ''' Represents an optional Element in the XML document
        ''' </summary>
        ''' <remarks>
        ''' This property is represented as an Element in the XML.
        ''' It is optional, initially it is not valid.
        ''' </remarks>
        <LiquidTechnologies.Runtime.Net45.ElementInfoSeqPrimOpt("AddresLine3", "", True, Nothing, LiquidTechnologies.Runtime.Net45.Conversions.ConversionType.type_string, Nothing, LiquidTechnologies.Runtime.Net45.WhitespaceUtils.WhitespaceRule.Preserve, "", -1, -1, "", "", "", "", -1, -1, -1, Nothing)> _
        Public Property AddresLine3() As String
            Get
                Return _AddresLine3
            End Get
            Set(ByVal value As String)
                If value Is Nothing Then
                    _AddresLine3 = Nothing
                Else
                    ' Apply whitespace rules appropriately
                    value = LiquidTechnologies.Runtime.Net45.WhitespaceUtils.Preserve(value) 
                    _AddresLine3 = value
                End If
            End Set
        End Property
        Protected _AddresLine3 As String
        #End Region
    
        #Region "Attribute - AddresLine4"
        ''' <summary>
        ''' Represents an optional Element in the XML document
        ''' </summary>
        ''' <remarks>
        ''' This property is represented as an Element in the XML.
        ''' It is optional, initially it is not valid.
        ''' </remarks>
        <LiquidTechnologies.Runtime.Net45.ElementInfoSeqPrimOpt("AddresLine4", "", True, Nothing, LiquidTechnologies.Runtime.Net45.Conversions.ConversionType.type_string, Nothing, LiquidTechnologies.Runtime.Net45.WhitespaceUtils.WhitespaceRule.Preserve, "", -1, -1, "", "", "", "", -1, -1, -1, Nothing)> _
        Public Property AddresLine4() As String
            Get
                Return _AddresLine4
            End Get
            Set(ByVal value As String)
                If value Is Nothing Then
                    _AddresLine4 = Nothing
                Else
                    ' Apply whitespace rules appropriately
                    value = LiquidTechnologies.Runtime.Net45.WhitespaceUtils.Preserve(value) 
                    _AddresLine4 = value
                End If
            End Set
        End Property
        Protected _AddresLine4 As String
        #End Region
    
        #Region "Attribute - AddresLine5"
        ''' <summary>
        ''' Represents a mandatory Element in the XML document
        ''' </summary>
        ''' <remarks>
        ''' This property is represented as an Element in the XML.
        ''' It is mandatory and therefore must be populated within the XML.
        ''' It is defaulted to "".
        ''' </remarks>
        <LiquidTechnologies.Runtime.Net45.ElementInfoSeqPrimMnd("AddresLine5", "", Nothing, LiquidTechnologies.Runtime.Net45.Conversions.ConversionType.type_string, Nothing, LiquidTechnologies.Runtime.Net45.WhitespaceUtils.WhitespaceRule.Preserve, "", -1, -1, "", "", "", "", -1, -1, -1, Nothing)> _
        Public Property AddresLine5() As String
            Get 
                Return _AddresLine5
            End Get
            Set(ByVal value As String)
                ' Apply whitespace rules appropriately
                value = LiquidTechnologies.Runtime.Net45.WhitespaceUtils.Preserve(value) 
                _AddresLine5 = value 
            End Set
        End Property
        Protected _AddresLine5 As String

        #End Region
    
        #Region "Attribute - PostCode"
        ''' <summary>
        ''' Represents a mandatory Element in the XML document
        ''' </summary>
        ''' <remarks>
        ''' This property is represented as an Element in the XML.
        ''' It is mandatory and therefore must be populated within the XML.
        ''' It is defaulted to "".
        ''' </remarks>
        <LiquidTechnologies.Runtime.Net45.ElementInfoSeqPrimMnd("PostCode", "", Nothing, LiquidTechnologies.Runtime.Net45.Conversions.ConversionType.type_string, Nothing, LiquidTechnologies.Runtime.Net45.WhitespaceUtils.WhitespaceRule.Preserve, "", -1, -1, "", "", "", "", -1, -1, -1, Nothing)> _
        Public Property PostCode() As String
            Get 
                Return _PostCode
            End Get
            Set(ByVal value As String)
                ' Apply whitespace rules appropriately
                value = LiquidTechnologies.Runtime.Net45.WhitespaceUtils.Preserve(value) 
                _PostCode = value 
            End Set
        End Property
        Protected _PostCode As String

        #End Region
    
        #Region "Attribute - Namespace"
        Public Overrides Readonly Property [Namespace]() As String
            Get 
                Return ""
            End Get
        End Property
        #End Region

        #Region "Attribute - GetBase"
        Public Overrides Function GetBase() As LiquidTechnologies.Runtime.Net45.XmlObjectBase
            Return Me
        End Function
        #End Region
        #End Region


' ##HAND_CODED_BLOCK_START ID="Additional Methods"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS

' Add Additional Methods and members here...

' ##HAND_CODED_BLOCK_END ID="Additional Methods"## DO NOT MODIFY ANYTHING OUTSIDE OF THESE TAGS
    End Class
End Namespace