3

VB.netで作業していて、汎用のToStringを作成したいと思います。「私」で「それぞれのために」を行う方法はありますか。

サンプル

 Public Property Var1() As String {... get ... set ...}
 Public Property Var2() As String {... get ... set ...}
 Public Property Var2() As String {... get ... set ...}

 Public Overrides Function ToString() As String
     dim str as stringbuilder
     for each item in Me
        str.append(item.tostring())
     next
     return str
 End Function

私の質問の理由は、私の変数のいくつかがnull(何もない)になる可能性があるためです。だからこのようなジェネリックで、私はすることができます

if item isnot nothing then
    str.append(item.tostring())
end if

多分もっと良い方法がありますか?

タンクあなた

4

1 に答える 1

1

これは、 でリフレクションを使用して実現できますGetFields。どうぞ:

Public Class [MyClass]
    Private a As String
    Private b As String

    Public Sub New(a As String, b As String)
        Me.a = a
        Me.b = b
    End Sub

    Public Overrides Function ToString() As String
        Dim sb = New StringBuilder()
        For Each item In [GetType]().GetFields(BindingFlags.NonPublic Or BindingFlags.Instance)
             sb.Append(item.Name) _
               .Append("=") _
               .Append(item.GetValue(Me)) _
               .Append(" ")
        Next
        Return sb.ToString()
    End Function

プロパティを表示したい場合は、GetProperties

于 2012-05-10T17:02:10.957 に答える