Я хочу использовать именованные коды ошибок в моем приложении.Это должно гарантировать, что каждый разработчик не будет путать коды ошибок только с цифрами с другими кодами, а также сократит время, необходимое разработчику, чтобы понять, что должен представлять код ошибки.
Сравните этот пример:
Function New() As Integer
Return 0
End Function
в этом примере:
Function New() As Integer
Return ErrorCodes.ERROR_SUCCESS
End Function
Конечно, я мог бы позволить разработчикам написать следующее:
Function New() As Integer
Return 0 ' ERROR_SUCCESS
End Function
Однако приведенный выше код вызывает ошибку, когдаразработчик обновляет фактический код возврата, но забывает о комментарии.Некоторые разработчики смотрят на фактический код возврата, а некоторые на комментарий.Я хочу смягчить эту путаницу.
Я подхожу к следующему классу (выдержка):
Public Class ErrorCodes
Private msName As String = Nothing
Private miValue As Integer = 0
Public Shared ReadOnly ERROR_SUCCESS As ErrorCodes = New ErrorCodes("ERROR_SUCCESS", 0)
Private Sub New(ByVal psName As String, ByVal piValue As Integer)
msName = psName
miValue = piValue
End Sub
Public ReadOnly Property [Name] As String
Get
Return msName
End Get
End Property
Public ReadOnly Property [Value] As Integer
Get
Return miValue
End Get
End Property
Public Overrides Function ToString() As String
Return String.Format("[{0}]{1}", msName, miValue)
End Function
End Class
Теперь я хочу использовать этот класс ErrorCodes
, как в следующем примере:
Function New() As Integer
Return ErrorCodes.ERROR_SUCCESS
End Function
Как и ожидалось, я выдам исключение (преобразование типа), поскольку возвращаемое мной фактическое значение является экземпляром класса ErrorCodes
вместо универсального типа данных Integer
.
Как вы можете видеть с помощью функции ToString()
, я позволил классу автоматически / неявно преобразовать экземпляр объекта в общий тип данных String
, когда экземпляр класса назначается типизированной переменной String
.
Есть ли способ сделать то же самое с универсальным типом данных Integer
, как я делал с ToString()
?
Я использую .NET Framework 4.0, что касается соображений совместимостис Windows XP SP3.
Еще один способ сказать, что я хочу:
Dim stringVariable As String = ErrorCodes.ERROR_SUCCESS ' should be "[0]ERROR_SUCCESS".
Dim integerVariable As Integer = ErrorCodes.ERROR_SUCCESS ' should be 0.
Я не хочу запускать неявное преобразование предупреждений / ошибок или принудительно вызыватьразработчик должен явно указать тип.