Обновленный myPointType
Imports System
Imports System.Data
Imports System.Data.Sql
Imports System.Data.SqlTypes
Imports System.Data.SqlServer
 _
 _
Public Structure myPointType
    Implements INullable
#Region "Private Values"
    ' Это значение поля символа-заполнителя
    Private m_xAxis As Integer
    Private m_yAxis As Integer
    ' Приватный член 
    Private m_Null As Boolean
#End Region
#Region "Constructors"
    Public Sub New(ByVal xAxis As Integer, ByVal yAxis As Integer)
        m_xAxis = xAxis
        m_yAxis = yAxis
        m_Null = False
    End Sub
    Private Sub New(ByVal isnull As Boolean)
        m_Null = isnull
        m_xAxis = 0
        m_yAxis = 0
    End Sub
#End Region
#Region "Public Properties"
    ''' 
    ''' Обеспечивает для точки доступ по оси x
    ''' 
    ''' 
    ''' 
    Public Property xAxis() As Integer
        Get
            Return m_xAxis
        End Get
        Set(ByVal value As Integer)
            m_xAxis = value
        End Set
    End Property
    ''' 
    ''' Обеспечивает для точки доступ по оси y
    ''' 
    ''' 
    ''' 
    Public Property yAxis() As Integer
        Get
            Return m_yAxis
        End Get
        Set(ByVal value As Integer)
            m_yAxis = value
        End Set
    End Property
    ''' 
    ''' Показывает, имеет ли текущая величина значение null.
    ''' 
    ''' 
    ''' 
    Public ReadOnly Property IsNull() As Boolean Implements INullable.IsNull
        Get
            ' Введите сюда свой код
            Return m_Null
        End Get
    End Property
    ''' 
    ''' Данный метод возвращает экземпляр UDT, который является null.
    ''' 
    ''' 
    ''' 
    Public Shared ReadOnly Property Null() As myPointType
        Get
            Dim h As myPointType = New myPointType
            h.m_Null = True
            Return h
        End Get
    End Property
#End Region
#Region "Public Shared Functions"
    ''' 
    ''' Метод пытается преобразовать величину в новую точку и возвращает корректный экземпляр
    ''' При поддержке нескольких преобразований данный способ может оказаться весьма ресурсоемким.
    ''' В настоящем примере я ограничился реализацией только для случая формата 'ToSTring()'
    ''' 
    ''' 
    ''' 
    ''' 
    Public Shared Function Parse(ByVal s As SqlString) As myPointType
        If s.IsNull Then
            Return Null
        End If
        Dim str As String = s.ToString()
        ' Теоретически, для того чтобы быть уверенным, что строка отформатирована "(#,#)", здесь требуется более сложная обработка ошибок
        Dim intComma As Integer
        intComma = str.IndexOf(",")
        Dim u As myPointType = New myPointType
        ' Введите сюда свой код
        Return u
    End Function
#End Region
#Region "Public Instance Methods"
    ''' 
    ''' Аннулирует используемое по умолчанию выполнение ToString, возвращая для данного значения точки строковое представление
    ''' 
    ''' 
    ''' 
    Public Overrides Function ToString() As String
        If m_Null Then
            Return ""
        End If
        Return "(" + m_xAxis.ToString() + "," + m_yAxis.ToString() + ")"
    End Function
    'В данной области также могли бы содержаться общие методы возврата значения точки .NET нестандартного Point UDT, который имеется в используемой версии базы данных
    ' Это метод символа-заполнителя
    'Public Function Method1() As String
    '    ' Введите сюда свой код
    '    Return "Hello"
    'End Function
    '' Это статический метод символа-заполнителя
    'Public Shared Function Method2() As SqlString
    '    ' Введите сюда свой код
    '    Return New SqlString("Hello")
    'End Function
#End Region
End Structure

Поделитесь материалом с коллегами и друзьями