自定义类型,派生自字符串

时间:2019-02-24 23:17:13

标签: vb.net

我正在处理一个API,该API以以下格式响应我的POST请求:

  

Base64String:AnotherBase64String:Another:Etc

因此,我有一些FunctionsExtensions会采用以下格式接收/返回字符串:

  • Base64字符串
  • Base64DoubleDotsBase64字符串(请参见上文)

事情变得非常混乱,从某种意义上来说,当一个函数将String作为输入时,需要花费一些时间(阅读Function doc)来检查String是否应为字符串,或Base64字符串等。Strings Extensions的智能感知也受到入侵。

我正在考虑派生两个新的Types,以便使事情变得更容易。

StringNotInheritable,因此我被鼓励使用以下内容:

Class Base64String
    Dim str As String
End Class

可以吗?看起来很简单(而且很漂亮),我很紧张。

PS:我的Base64字符串将不需要任何操作,例如串联。唯一需要的扩展名将是定制的。但是,如果有办法获取字符串的本机扩展名,我很想知道(出于好奇)。

1 个答案:

答案 0 :(得分:0)

Mark Hall的帖子在his post中提到了Widening,这正是我所需要的:

Public Class Base64String

    Private _String As String

    Private Sub New(ByVal value As String)
        Me._string = value
    End Sub

    Public Shared Widening Operator CType(ByVal value As String) As Base64String
        Return New Base64String(value)
    End Operator

    Public Overrides Function ToString() As String
        Return _String
    End Function

    Public Shared Operator &(ByVal s1 As Base64String, s2 As Base64String) As Base64String
        Dim temp As String = s1._String & s2._String
        Return New Base64String(temp)
    End Operator

End Class

要这样使用:

Dim MyString As Base64String = "abcd"
Console.WriteLine(MyString)