Отражение: ходьба на уроке для автоматизированного тестирования - PullRequest
1 голос
/ 31 января 2009

У меня есть классы, в которых хранятся данные, и методы для получения данных по отдельным кредитам.

У меня есть код, который просматривает свойства и извлекает данные обратно, но в соответствии с правилами кодирования MSDN свойства просто должны получать данные, а не делать что-либо. Мои свойства фактически перемещаются на экран на мэйнфрейме и очищают данные. Поэтому, когда я наведу курсор мыши на свойство или наведу указатель мыши на код в отладчике, иногда он срабатывает, изменяет экран в мейнфрейме, в котором я нахожусь. Поэтому я бы хотел изменить свой ходунки отражения, чтобы он также мог тянуть вернуть результаты функции и изменить небуферизованные данные на функции.

Public Function GetAllReadableProperties(ByVal obj As Object) As String
        Dim result As New System.Text.StringBuilder(300)

        For Each Item As System.Reflection.PropertyInfo In obj.GetType.GetProperties()
            With Item
                If .CanRead Then
                    result.Append(.Name + ":")
                    If .GetIndexParameters().Length = 0 Then
                        Dim value As Object = .GetValue(obj, Nothing)
                        If value Is Nothing Then
                            result.AppendLine("<Nothing>")
                        Else
                            result.AppendLine(value.ToString)
                        End If
                    Else
                        result.AppendLine("Indexed")
                    End If
                End If
            End With
        Next
        Return result.ToString
    End Function

Как бы мне пройтись по методам? Какой самый простой способ пометить определенные функции для ходьбы по умолчанию или по умолчанию не ходить? Пользовательские атрибуты?

Будет ли этот код работать вообще для структуры, переданной вместо класса?

Я хотел бы закодировать это для создания таблицы данных для отображения сетки данных, когда я продвинусь дальше.

1 Ответ

1 голос
/ 31 января 2009

Повторное размышление, возможно [DebuggerBrowsable(DebuggerBrowsableState.Never)]?

Однако, возможно, лучшим подходом является следование рекомендациям и придание свойствам идемпотентности с помощью методов их заполнения? перед вызовом объекта в сетку вызовите метод «заполнить» (сообщая ему то, что вам нужно знать).

Для структуры ... ну, структура должна (за исключением очень определенных причин) всегда быть неизменной. Таким образом, структура с отложенной загрузкой в ​​значительной степени оксюморон. Вы, вероятно, рискуете потерять след того, что здесь происходит ... короткая версия: сделайте это классом (вполне возможно, что IDisposable, и, возможно, имеет финализатор).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...