Я пытаюсь использовать общую технику для создания структуры, имитирующей собственный тип, это ограниченное число (ограничение не показано в образце):
<HideModuleName> _
Public Module DbKeyModule
<DebuggerDisplay("ID = {Value}")> _
Structure DbKey
Implements IComparable(Of DbKey)
Implements IEquatable(Of DbKey)
Const Null As Integer = 0
ReadOnly Property Value() As Integer
Get
Return _Value
End Get
End Property
Overloads Function ToString() As String
Return If(_Value <> 0, _Value.ToString(InvariantCulture.NumberFormat), "NULL")
End Function
'GetHashCode(), Equals(), CompareTo() follow
'constructors follow
'operator definitions follow
'type conversions definitions follow
End Structure
End Module
Все в порядке, за исключением некоторых распечаток по умолчанию, которые меня не устраивают и я хочу их изменить. Является ли это возможным?
Если я объявлю переменную:
Dim ID As New DbKey(12)
Затем в непосредственной области:
Дело 1:
? String.Format("{0}", ID))
Результат:
Application1.DbKeyModule+DbKey
Случай 2:
? ID
Результат:
ID = 12
_Value: 12
Null: 0
Value: 12
Можно ли изменить один или оба этих двух выхода по умолчанию на что-то другое?
Примечание. Такие выражения, как "Value is " & ID
или ID.ToString()
, работают правильно, потому что я объявил необходимые методы, операторы и приведения типов. Но приведенные выше два выражения относятся к некоторой форме объект-строка, находящейся вне контроля этих средств. Можно ли это изменить?