Не сохранять изменения, внесенные в значения свойств в пользовательском классе - PullRequest
0 голосов
/ 11 июня 2011

Я создал эту функцию для удаления vbCrLf из значений свойств в пользовательском классе: (vTransaction)

Public Function ValidateTransaction(ByRef vTransaction)            
        Dim property1 As String
        Dim value1 As String

        For Each p As System.Reflection.PropertyInfo In vTransaction.GetType().GetProperties()
            If p.CanRead Then
                property1 = p.Name '// FOR TESTING to identify Property Name
                value1 = p.GetValue(vTransaction, Nothing)
                If (TypeOf value1 Is String) Then
                    If value1 <> " " And value1 <> "" Then
                        'MsgBox("Before .Replace:" & vbNewLine & value1.ToString) '// FOR TESTING.
                        value1 = value1.ToString.Replace(vbCrLf, " ")
                        'MsgBox("After .Replace:" & vbNewLine & value1.ToString) '// FOR TESTING.
                    End If
                End If
            End If
        Next

        Return vTransaction

    End Function

В ходе тестирования я могу убедиться, что vbCrLf заменяется пробелом, как и ожидалось.Когда я пересматриваю vTransaction, изменения не были сохранены, и vbCrlf все еще там.

Что мне нужно сделать, чтобы сохранить изменения, вносимые в значения в vTransaction.

1 Ответ

4 голосов
/ 11 июня 2011

Вы не устанавливаете значение свойства снова. Вы просто создаете строку, которая не используется после этого. Ваш самый внутренний блок If должен быть примерно таким:

If value1 <> " " And value1 <> "" Then
    'MsgBox("Before .Replace:" & vbNewLine & value1.ToString) '// FOR TESTING.
    p.SetValue(vTransaction, value1.ToString.Replace(vbCrLf, " "), Nothing)
    'MsgBox("After .Replace:" & vbNewLine & value1.ToString) '// FOR TESTING.
End If
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...